2013-04-06 4 views
1

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?

+0

Какую версию верблюда вы используете? –

+0

@ClausIbsen 2.10.3 – whaley

ответ

1

Да, это небольшая ошибка в Camel. Я зарегистрировал билет и рабочее исправление в тестах https://issues.apache.org/jira/browse/CAMEL-6255

+0

Принимая как ответ, так как это была обнаруженная ошибка и отмечена как исправленная в версиях верблюда 2.10.5, 2.11.0. – whaley