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

在正则表达式中,您可以添加“或”,以便您可以匹配 2 中的任何一个是否匹配。但是你需要一点 reg exp ninja 来做到这一点。那将是相似的

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

但是请检查 JavaDoc 中的正则表达式:http ://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html 。以及其他有关如何执行正则表达式的文档。您还可以在 Java 编辑器中安装一些插件,您可以在其中即时试用正则表达式,找出适合您的模式。

但是,在 Camel 中的简单表达式中,您也可以使用二元运算符,并添加第二个表达式。所以它会是这样的:

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

在 Camel 2.8.x 或更早版本中,您只能拥有 1 个二元运算符,但从 Camel 2.9 开始,您可以拥有任意数量的二元运算符。

有关 Simple 表达式,请参阅 Camel 文档中的详细信息。请参阅有关运算符的部分:http ://camel.apache.org/simple

于 2012-05-17T11:29:20.007 回答