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 は、分割されたすべてのオブジェクトが (1 つのファイルから) 処理されたときにトリガーされる必要があります。

上記のコードの問題は、再シーケンス ステップを含めると、エクスポートがすぐにトリガーされ、再シーケンス自体が機能しないことです。Camel の背後にあるスレッド モデルを理解していないようです。

すべてのヒントを事前にありがとう!

4

1 に答える 1

0

prioAssign プロセッサが後で分割できる本体を構築していないため、分割が即座に終了し、すべてが exportProcessor に移動する可能性はありませんか?

于 2013-07-18T12:36:45.307 に答える