2017-05-23 3 views
0

私はApache Camelにかなり新しく、いくつか質問があります。私は私のルートは、以下のやりたい:私は内側のリストの各項目を扱うことができるように、二回 Apache Camelはネストされた分割内のすべての交換に参加します

  • LoadSomeThingsProcessor
  • 分割で

    • 負荷リストのリストをいくつかのものをフィルタリング私は
    • を必要としません
    • はSOMに見える内側の分割
    • 、最終的に再び参加(バック交換の1つ)

    マイルートから残りのすべての交流に参加します次のようなething:

    from("direct:myRoute") 
        .process(new LoadSomeThingsProcessor()) 
        .split(body()) 
        .streaming() 
        .process(new SomeProcessor()) 
        .split(body()) 
        .streaming() 
        .filter(new SomeFilter()) 
        .aggregate(header("myHeader", new MyAggregationStrategy()) 
        .completionPredicate(new MyCompletionPredicate()) 
        // more processors 
        // aggregate again (should just be one exchange after this point 
        // more processors 
        .to("direct:someOtherRoute"); 
    

    MyCompletionPredicatematches方法はただです:

    return exchange.getIn().getProperty("CamelSplitComplete", Boolean.class); 
    

    私は続行する前に、各分割内のすべてのやり取りが一緒に集約されていることを確認します。

    私の質問は: - CamelSplitCompleteのヘッダーは、決して真実ではありません。何が原因でしょうか? - ネストされた分割内で集計を試みて問題が発生していますか? - 最後の交換(CamelSplitComplete = trueがあると思われるものが除外されていればどうなりますか?私はすべての交換機を一緒に集約したことをどのように知ることができますか? - これは正しい方法ですか?他に何私は?

    検討すべきであることはFYI私の集約戦略は、単に新しい交流の遺体を取り、古い為替の本体に追加します。事前に

    多くの感謝を。

  • 答えて

    0

    作成したメッセージを参照してください。プロセッサEIP:http://camel.apache.org/composed-message-processor.html

    そして、タイトルがのSplitter Onlyの例があります。は、フォーク/ジョインのスタイルを可能にします。

    2×分割とすべての種類のもので複雑にしないようにしてください。使用するのがずっと簡単です。 、テストして作業してください。

    関連する問題