流媒体时我可以依赖CamelSplitComplete吗?

时间:2016-12-30 21:35:02

标签: apache-camel

我们有一个处理大文件的过程。我们正在使用分割器并使用streaming()

docs

  

流式传输如果启用,则Camel将以流式方式拆分,这意味着它将以块的形式拆分输入消息。这减少了内存开销。例如,如果您拆分大消息,建议启用流式传输。如果启用了流式传输,则子消息回复将无序聚合,例如按照它们返回的顺序聚合。如果禁用,Camel将按照拆分的顺序处理子消息回复。

所以我知道交换可以不按顺序聚合。那么分割器是否标记它处理的最后一个交换,并将CamelSplitComplete设置为true?如果是这样,那么它可能会无序聚合,在我汇总所有消息之前,我最终会考虑完成聚合。这将导致数据丢失。

相反,只有当它知道它是最后一个要聚合的时候才会标记交换CamelSplitComplete,那么我相信我可以依赖它。

更新: 假设在上面的情况下依赖CamelSplitComplete是安全的,如果我的路由进行过滤,依赖它是否安全?我假设没有,因为最后一行可能符合过滤条件并被删除。

1 个答案:

答案 0 :(得分:1)

我已经完成了使用流式传输的大文件分割,并且我已经使用CamelSplitComplete属性在分割完成后进行一些处理。所以是的,你可以依靠它作为最后的交换。当然,最好有一个Camel单元测试来验证测试。但它对我有用。我不能说过滤器,因为如果过滤掉最后一次交换怎么办?