我正在使用駱駝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陣列看起來像:
[{},{},{},{},{},{},{}]
在存在在該JSON陣列7個對象元素。
測試幾乎立即失敗。但是,測試的輸出清楚地顯示了7條「收到:{}」日誌消息。
現在,這裏是有趣的部分...在NotifyBuilder中,如果我設置了.whenExactlyDone(8),那麼測試通過。第8條消息將來自哪裏?我很樂意只說這個測試是有效的,並稱它爲一天,因爲我知道它至少從該json數組中分離出來的消息(忽略了NotifyBuilder中沒有驗證內容的事實),但是我關心實際上是否有通過不屬於的路線發送的第八次交換。 NotifyBuilder看到通過該路線而不是7路完成的8個交易所的原因是什麼?
您使用的是哪種駱駝版本? – 2013-04-07 07:06:35
@ClausIbsen 2.10.3 – whaley 2013-04-08 20:27:24