2

USER_AUDIT以下は、 http 要求リストを使用したトランザクションの 場合にメッセージをルーティングするサンプルです。http://www.blabla.com/dothis/USER_AUDIT?AA=aa&BB=bb

   <when>
      <simple>${in.header.CamelHttpPath} regex '(?i)/USER_AUDIT'</simple>
      <bean ref="transactionList" method="get" />
      <bean ref="transactionTransform" method="convert" />
    </when>

CARD_VERここで、他のトランザクションを同じルートにルーティングしたいと考えています。次のような構文はありますか:

<simple>${in.header.CamelHttpPath} regex '(?i)/USER_AUDIT' || '(?i)/CARD_VER'</simple> ?
4

1 に答える 1

2

正規表現では、「or」を追加して、2 つのいずれかが一致する場合に一致させることができます。しかし、それを行うには、少し正規表現忍者が必要です。それは似たようなものだろう

'(?i)/[USER_AUDIT|CARD_VER]'

ただし、JavaDoc で正規表現を確認してください: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html。正規表現の方法については、その他のドキュメントを参照してください。また、Java エディターにインストールできるプラグインもあり、その場で正規表現を試して、自分に合ったパターンを見つけることができます。

ただし、Camel の単純な式では、二項演算子を使用して、2 番目の式を追加することもできます。したがって、次のようになります。

<simple>${in.header.CamelHttpPath} regex '(?i)/USER_AUDIT' ||
        ${in.header.CamelHttpPath} regex '(?i)/CARD_VER'</simple>

Camel 2.8.x 以前では、2 項演算子は 1 つしか持てませんでしたが、Camel 2.9 以降では、いくつでも持つことができます。

Simple 式の詳細については、Camel のドキュメントを参照してください。http://camel.apache.org/simpleの演算子に関するセクションを参照してください。

于 2012-05-17T11:29:20.007 に答える