spring DSLを使用してCamelで「遊んで」いるときに、次の問題に遭遇しました。予想されるメッセージフローが次のようであるとします。
したがって、次のようなもの:
<route>
<from uri="...">
<to uri="...">
<to uri="...">
</route>
質問:ステップ1でSpring DSLにパラメーターを保存して、後でステップ3で使用できるようにするにはどうすればよいですか?
したがって、ステップ1で受信したメッセージのXML本体からXMLパラメーターを抽出し、変数に入れて、後でステップ3で送信するメッセージを作成するために使用できるようにしたいと思います。
パラメータを抽出するために、XPATHの使用を考えていました。それは問題ないように見えますが、XPATHの出力を変数に入れて、後でその変数を使用する方法がわかりません...(構文??)
注:ご覧のように、私の開発知識はかなり限られています...申し訳ありません。しかし、誰かがこれを手伝ってくれるならそれでもすばらしいでしょう:)。
Exchange プロパティまたはこのようなメッセージヘッダーにストアデータを設定できます...
.setHeader("ID", XPathBuilder.xpath("/order/@id", String.class))
.setProperty("ID", XPathBuilder.xpath("/order/@id", String.class))
次に、Bean /プロセッサでExchangeから次のように取得します...
String propId = (String) exchange.getProperty("ID");
String headerId = (String) exchange.getIn().getHeader("ID"); }
いくつか例を挙げましょう。
<setHeader headerName="token">
<constant>someValue</constant>
</setHeader>
<setHeader headerName="userName">
<simple>${properties:userName}</simple> //from config
</setHeader>
<setProperty propertyName="bodyBkp">
<simple>${in.body}</simple>
</setProperty>
<setProperty propertyName="orderNumber">
<xpath resultType="String">//item[1]/orderNumber/text()</xpath>
</setProperty>
ゲッター
${exchangeProperty[orderNumber]}
${in.headers.token}
ドキュメント
簡単な表現言語を確認してください: http://camel.Apache.org/simple.html
キャメルのテストケースを確認することも、特にSpring DSLの場合に役立ちます。