我试图拦截一个端点,其中URI的值与交换头中的某些信息匹配。
假设我在标题中有一个名为 DatabaseName的字段。我想强制执行特定路由只写入标题中指定的数据库。
我可以这样做吗?
interceptSendToEndpoint("mock:${in.header.DatabaseName}")
我试过了,但它似乎不起作用。我有什么选择?
我也想做类似的事情:
interceptSendToEndpoint("mock:*").when(...)?
但在这种情况下,我不确定我是否可以在when表达式中引用截取节点的URI。
由于
答案 0 :(得分:4)
您可以使用通配符拦截并将其与何时执行所需操作相结合,请参阅:http://camel.apache.org/intercept
是Message上的标题,其中包含密钥Exchange.INTERCEPTED_ENDPOINT(CamelInterceptedEndpoint),其中包含截获的端点uri。您可以在匹配谓词的时间使用它。类似的东西:
interceptSendToEndpoint("mock:*")
.when(simple("${header.CamelInterceptedEndpoint} == ${in.header.DatabaseName}"))
...
答案 1 :(得分:0)
使用recipientList
指令:http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html