如果我在camel中拆分
parallelProcessing()
时不指定List
,Camel会按顺序处理这些项目吗?
根据文档,您还必须设置
streaming=false
以保证按顺序聚合。
Ralf 的答案解决了 aggregation 的顺序,但 OP 的问题是关于 processing 的顺序。这两个订单不必相同。
Camel 文档似乎没有直接回答这个问题。
根据文档,我认为可以推断出以下内容
当
parallelProcessing
未使用时:
streaming
时(在这种情况下,在处理任何项目之前列表将被完全拆分),执行顺序取决于保存拆分列表的结构中的元素顺序。该结构的类型没有记录。我们不应该假设列表项的原始消息顺序将保留在此结构中。因此,假设这些项目将按照它们在输入消息中出现的顺序进行处理是不安全的。
streaming
is 时,输入消息将一次拆分一个项目,并且在从输入消息中拆分下一个项目之前将处理该项目。这里更安全的假设是,这些项目将以与输入消息中遇到的项目相同的顺序执行。但这不是一份合同;而是一份合同。只是一个更安全的假设。
parallelProcessing
时,问题本身就毫无意义;所有项目将同时处理。这是一份合同。