У меня есть файл, как этотверблюд completionSize с completionTimeout не работает должным образом в JUnit
line1
line2
line3
line4
line5
line6
line7
line8
И маршрут вроде этого:
.from("direct:start")
.split().tokenize("\r\n").streaming()
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("Splitter:" +
exchange.getIn().getBody(String.class));
}
})
.aggregate(constant(true), new MyAggregationStrategy())
.completionSize(3).completionTimeout(10000)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
int size = exchange.getIn().getBody(Set.class).size();
System.out.println("Processor, Set size:" + size);
}
})
.to("mock:end")
MyAggregationStrategy создает набор с 3-х пунктов. Это хорошо работает в течение первых 6 строк, я получаю такой вывод:
Splitter:line 1
Splitter:line 2
Splitter:line 3
...
Processor, Set size:3
...
Splitter:line 4
Splitter:line 5
Splitter:line 6
...
Processor, Set size:3
...
Splitter:line 7
Splitter:line 8
Хотя линия 7 и линии 8 объединяются в oldExchange в MyAggregationStrategy процессора определяется впоследствии никогда не называют их. Также завершениеTimeout не работает. Код немедленно прекращается и не ждет 10 секунд для не существующей линии 9.
Любая идея? Я думал, что это рекомендуемый способ работы с оставшимися строками, которые не удовлетворяют CompleSize?
Поскольку мы привязаны к Java 6, мы используем версию верблюда 2.13.4.
Не могли бы вы принять ответ, так что вопрос не в списке без ответа? Благодаря! –
Я хотел, но система говорит: «Вы можете принять свой собственный ответ за 21 час». – nick78
Ах, 48-часовой период ожидания все равно должен быть на месте. Черт, прости. –