2016-11-06 3 views
0

を分割した後、メッセージを変更したり、他の交換機からヘッダを取得する可能性が私の問題であるということです私は以下のようにスプリッタクラス持ってそれ以外のブロックでははここ

<split strategyRef="someClassStrategy"> 
    <method ref="mySplitterBean" method="splitMessage" /> 
    <choice> 
    <when> 
    <simple>${property.CamelSplitIndex} == 0</simple> 
    <!-- 1. calculate something and store result in header, for example set header test=12345 --> 
    </when> 
    <otherwise> 
    <!-- 2. now how can I retrieve "test" header from above exchange (from splitIndex 0) --> 
    </otherwise> 
    </choice> 
</split> 

をI MySplitterBeanによってコピーされたメッセージオブジェクトを持っていますが、スプリット後に(スプリントインデックス0を処理している間に)作成された「テスト」ヘッダーを何とか取得したいと思います。だから私の質問は可能なのかどうか、それをどのようにするのか?

答えて

1

分割操作の前にダミーオブジェクトでプロパティ値を設定できます。 各交換オブジェクトは、参照渡しでこのオブジェクトにアクセスできます。 値に応じて、同じオブジェクトにアクセスできることを保証するために、リストのような追加のコンテナが必要です。

+0

はい、私はトリックを行うべきだと思います。ありがとう! – nbaplaya

0

分割インデックスがゼロの場合、ブロックにアクセスできません。この場合、同じ交換所から「test」ヘッダーを取得できません。選択ブロックの外側にアクセスできます。

+0

私はそれが選択ブロックの後に設定されていることを知っていますが、それは私にとって遅くて、スプリットインデックス1と2のためにこのヘッダが必要です – nbaplaya

+0

完全なルートを見る必要があります。プロパティと次回アクセスします。 –

+0

それ以外の点では、内部では既に新しい交換をブロックしています:( – nbaplaya