2013-04-06 60 views
1

我正在使用駱駝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個交易所的原因是什麼?

+0

您使用的是哪種駱駝版本? – 2013-04-07 07:06:35

+0

@ClausIbsen 2.10.3 – whaley 2013-04-08 20:27:24

回答

1

是的,這是駱駝的一個小bug。我已經登錄了一張票,並在測試中使用了一個工作修復程序 https://issues.apache.org/jira/browse/CAMEL-6255

+0

接受答案,因爲這是一個發現的錯誤,並已標記爲駱駝版本2.10.5,2.11.0中的固定。 – whaley 2013-04-10 23:57:59