0
from("direct:A")
    .split(//expression that split msg into two msg M1,M2)
          .process(// here processing)

.from("direct:A")Java メソッドのように動作します。つまり、それを呼び出すスレッドは継続しsplitます。

では、上記の場合はどうなるでしょうか?

Ley say Threadt1呼び出しfrom("direct:A")

ここに入ると、メッセージは 2 つの新しいメッセージと.split()に分割されます。M1M2

ここから先は、同期的に ?をt1呼び出します。process()M1M2

また

process()2つの新しいスレッドで非同期に呼び出されM1ますか?M2

4

1 に答える 1

1

デフォルトでは、process()メソッドは順次呼び出されます。ただし、オプションを追加することで並列処理を有効にすることができます。

キャメルのドキュメントから:

parallelProcessing (デフォルトは false): 有効にすると、サブメッセージの処理が同時に行われます。呼び出し元スレッドは、すべてのサブメッセージが完全に処理されるまで待機してから続行することに注意してください。

注: スプリッターのパフォーマンスに関心がある場合は、ストリーミング オプションを探すことができます。

于 2013-11-05T21:44:34.373 に答える