如果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> ?
答案 0 :(得分: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表达式中,您还可以使用二元运算符,并添加第二个表达式。所以它会是这样的:
<simple>${in.header.CamelHttpPath} regex '(?i)/USER_AUDIT' ||
${in.header.CamelHttpPath} regex '(?i)/CARD_VER'</simple>
在Camel 2.8.x或更早版本中,您只能拥有1个二元运算符,但从Camel 2.9开始,您可以拥有任意数量的运算符。
请参阅Camel文档中有关Simple表达式的详细信息。请参阅有关运算符的部分:http://camel.apache.org/simple