我對Apache Camel相當新,並有幾個問題。我希望我的路線,做到以下幾點:名單Apache Camel加入所有交換嵌套拆分
- 負荷列表中
LoadSomeThingsProcessor
- 分裂兩次,這樣我就可以在內部列表處理每個項目
- 過濾掉一些東西,我不需要
- 加入從內部分裂
- 然後最終再加入(回一個交換)
我的路線,看起來SOM所有剩餘的交流ething像下面這樣:
from("direct:myRoute")
.process(new LoadSomeThingsProcessor())
.split(body())
.streaming()
.process(new SomeProcessor())
.split(body())
.streaming()
.filter(new SomeFilter())
.aggregate(header("myHeader", new MyAggregationStrategy())
.completionPredicate(new MyCompletionPredicate())
// more processors
// aggregate again (should just be one exchange after this point
// more processors
.to("direct:someOtherRoute");
MyCompletionPredicate
的matches
方法就是:
return exchange.getIn().getProperty("CamelSplitComplete", Boolean.class);
我想確保每個分割所有交換聚合在一起之前,我繼續。
我的問題是: - CamelSplitComplete
標題在某種程度上從未如此。什麼會造成這種情況? - 是否試圖在嵌套的分割內聚集導致任何問題? - 如果最後一次交換(應該有CamelSplitComplete = true
的交換被過濾掉了,會發生什麼情況?我如何知道我彙總了所有交換? - 這是否是解決此問題的正確方法?如果不是,還有什麼我應該考慮?
FYI我的聚合策略只是需要新的交易所的屍體,並將它們添加到老交換的身體。
很多感謝。