2016-12-30 27 views
0

我們有一個處理大文件的過程。我們使用分離器並使用streaming()流媒體時我可以依賴CamelSplitComplete嗎?

docs

如果啓用然後將駱駝以流方式分裂,這意味着它將在塊分割輸入消息。這減少了內存開銷。例如,如果您將大消息分開,建議啓用流式傳輸。如果啓用流式傳輸,那麼子消息回覆將按亂序進行彙總,例如按照它們返回的順序進行彙總。如果禁用,駱駝將按照與拆分相同的順序處理子消息回覆。

所以我知道的交流可以聚集無序。那麼分離器是否將CamelSplitComplete設置爲true的最後一次交換標記爲?如果是這樣,那麼它可能會按順序進行聚合,並且在聚合所有消息之前我最終會考慮聚合完成。這會導致數據丟失。

如果只有當它知道這是要聚合的最後一個,而不是它標誌着交換CamelSplitComplete的話,我相信我可以依靠它。

更新: 假設在上面的情況下依賴CamelSplitComplete是安全的,如果我的路由過濾,依賴它是否安全?我假設沒有,因爲最後一行可能符合過濾條件並被刪除。

+1

當您使用過濾器時,您不應該在CamelSplitComplete上進行中繼。 – Sagar

+0

@sagar謝謝,是的,這就是我們苦苦學習的。 –

回答

0

我已經完成了大流文件的拆分,我已經使用CamelSplitComplete屬性在拆分完成後執行一些處理。所以是的,你可以依靠它成爲最後的交換。當然,最好有一個駱駝單元測試來驗證測試。但它爲我工作。我不能說過濾器,因爲如果你過濾了最後一次交換?

+0

是的,我需要在小文件上添加一些日誌記錄並查看發生了什麼。 –