Im using Camel 2.10.3.Camel Splitter производит неправильное количество завершенных обменов, увиденное NotifyBuilder?
Давайте предположим, что у меня есть маршрут, который выглядит примерно так:
from("direct:split")
.routeId("split-ti-analytics-events")
.split().method(JsonArraySplitter.class,"split")
.parallelProcessing()
.log("Received: ${body}")
.to("stub:direct:somewhere");
И тестовый класс, который делает, что после с NotifyBuilder утверждать, мой сплиттер делает то, что должен.
@Test(description = "Asserts that when we receive a json event that we properly split the " +
"events if the payload was a json array.")
public void testReceiveTiAnalyticsArrayOfJsonEvents() {
NotifyBuilder notifier = new NotifyBuilder(context)
.wereSentTo("stub:direct:somewhere")
.whenExactlyDone(7)
.create();
producerTemplate.sendBody("direct:split", sampleEventsInArrayJsonString);
assertTrue(notifier.matches(5, TimeUnit.SECONDS));
}
И предположим sampleEventsInArrayJsonString является JSON массив, который выглядит следующим образом:
[{},{},{},{},{},{},{}]
Где есть 7 объектов элементов в этом массиве JSON.
Тест не срабатывает почти сразу. Однако на выходе теста четко отображаются 7 сообщений журнала «Received: {}».
Теперь, вот интересная часть ... в NotifyBuilder, если я установил .whenExactlyDone (8), тогда тест пройдет. Откуда должно было появиться это 8-е сообщение? Я хотел бы просто сказать, что этот тест действителен и называет его днем, так как я знаю, что он получает хотя бы сообщения, отделяемые от этого json-массива (игнорируя тот факт, что я не проверяю содержимое в NotifyBuilder), но я обеспокоенный тем, что на самом деле имеет 8-й обмен, отправленный по маршруту, который не принадлежит. В чем причина, по которой NotifyBuilder видит 8 обменов, которые выполняются через этот маршрут вместо 7?
Какую версию верблюда вы используете? –
@ClausIbsen 2.10.3 – whaley