2

私はラクダの選択を書きました。ルートの入力はxmlです。以下に示す:入力としてjsonを使用して選択を記述したいので、jsonを評価して次のコンポーネントにルーティングする方法。よろしくお願いします。JSON は次のとおりです。

{
  "service": { "serviceType": "OtherServcie" }
}

<choice>
 <when>
  <xpath>/service/serviceType='PaymentServcie'</xpath>
  <log message="In PaymentServcie"/>
 </when>
 <otherwise>
  <log message="In OtherServcie"/>
 </otherwise>
</choice>
4

4 に答える 4

1

遅すぎるかもしれませんが、答えはcamel-jsonpathを使用することです。

<route>
  <from uri="direct:start"/>
  <choice>
    <when>
      <jsonpath>$.service[?(@.serviceType=='PaymentService')]</jsonpath>
      <log message="In PaymentServcie"/>
    </when>
    <otherwise>
      <log message="In OtherServcie"/>
    </otherwise>
  </choice>

Maven の依存関係を忘れないでください。

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jsonpath</artifactId>
    <version>${camel.version}</version>
</dependency>
于 2017-02-02T13:12:44.050 に答える
0

ヘッダーを使用して式を評価できます。ルート内の選択を評価する直前に、プロセッサー内でヘッダー (in out メッセージ) を設定できます。次に、「simple」タグ内の式を評価します。

${in.header.serviceType}=='PaymentService'

http://camel.apache.org/simple.html

于 2013-09-16T15:22:29.703 に答える