我有一个关于 split()、resequence() 与多线程集成的问题。我的(天真)路线看起来像这样(缩写以解释问题):
from("file:input")
.process(prioAssign)
.split(body().tokenize("\n")).streaming()
.resequence().simple("${in.header.prio}").allowDuplicates().reverse()
.to("direct:process")
.end()
.process(exportProcessor)
from("direct:process")
.threads(10, 100, "process")
.process(importProcessor) // take some time for processing
我喜欢完成以下事情:
- importProcessor 的工作应该分布在多个线程上
- 项目(来自拆分器)应按优先级处理(重新排序)
- 处理所有拆分对象时必须触发 exportProcessor(来自一个文件)
上面代码的问题是,如果我包含重新排序步骤,导出会立即触发并且重新排序本身不起作用。看来,我不了解 Camel 背后的线程模型。
非常感谢所有提示!