0

我有一个关于 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

我喜欢完成以下事情:

  1. importProcessor 的工作应该分布在多个线程上
  2. 项目(来自拆分器)应按优先级处理(重新排序)
  3. 处理所有拆分对象时必须触发 exportProcessor(来自一个文件)

上面代码的问题是,如果我包含重新排序步骤,导出会立即触发并且重新排序本身不起作用。看来,我不了解 Camel 背后的线程模型。

非常感谢所有提示!

4

1 回答 1

0

难道你的 prioAssign 处理器没有构建一个可以稍后拆分的主体,因此拆分立即结束并且所有内容都移动到 exportProcessor 吗?

于 2013-07-18T12:36:45.307 回答