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

问题描述:

我们有一个处理大文件的过程。我们使用分离器并使用streaming()流媒体时我可以依赖CamelSplitComplete吗?

docs

如果启用然后将骆驼以流方式分裂,这意味着它将在块分割输入消息。这减少了内存开销。例如,如果您将大消息分开,建议启用流式传输。如果启用流式传输,那么子消息回复将按乱序进行汇总,例如按照它们返回的顺序进行汇总。如果禁用,骆驼将按照与拆分相同的顺序处理子消息回复。

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

如果只有当它知道这是要聚合的最后一个,而不是它标志着交换CamelSplitComplete的话,我相信我可以依靠它。

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

+1

当您使用过滤器时,您不应该在CamelSplitComplete上进行中继。 – Sagar

+0

@sagar谢谢,是的,这就是我们苦苦学习的。 –

我已经完成了大流文件的拆分,我已经使用CamelSplitComplete属性在拆分完成后执行一些处理。所以是的,你可以依靠它成为最后的交换。当然,最好有一个骆驼单元测试来验证测试。但它为我工作。我不能说过滤器,因为如果你过滤了最后一次交换?

+0

是的,我需要在小文件上添加一些日志记录并查看发生了什么。 –