我们有一个处理大文件的过程。我们使用的是拆分器和streaming()。
文档说
如果启用了流,那么Camel将以流式方式拆分,这意味着它将将输入消息分割成块。这减少了内存开销。例如,如果您拆分大消息,它建议启用流。如果启用流,则子消息回复将被按顺序进行聚合(如按返回顺序排列)。如果禁用,骆驼将处理子消息答复的顺序与他们分裂的地方。
所以我知道交易所可能会被无序地聚集起来。那么,拆分器是否将其处理的最后一个交换标记为CamelSplitComplete设置为true?如果是这样的话,那么它可能会被按顺序进行聚合,在聚合所有消息之前,我将考虑完成我的聚合。这将导致数据丢失。
如果它只在知道它是最后一个被聚合的交换CamelSplitComplete时才标记它,那么我相信我可以依赖它。
更新:假设在上述情况下依赖CamelSplitComplete是安全的,那么如果我的路由进行过滤,那么依赖它安全吗?我认为没有,因为最后一行可能与筛选条件匹配并被删除。
发布于 2017-01-03 08:12:15
我已经使用流对大文件进行了拆分,并且在拆分完成后,我使用了CamelSplitComplete属性进行了一些处理。所以是的,你可以依赖它作为最后的交换。当然,最好有一个骆驼单元测试来验证测试。但它对我有效。我不能说过滤器,因为如果你过滤掉最后一次交换怎么办?
https://stackoverflow.com/questions/41402966
复制相似问题