动态拦截Camel端点

时间:2013-09-24 04:11:17

标签: apache-camel intercept

我试图拦截一个端点,其中URI的值与交换头中的某些信息匹配。

假设我在标题中有一个名为 DatabaseName的字段。我想强制执行特定路由只写入标题中指定的数据库。

我可以这样做吗?

interceptSendToEndpoint("mock:${in.header.DatabaseName}")

我试过了,但它似乎不起作用。我有什么选择?

我也想做类似的事情:

interceptSendToEndpoint("mock:*").when(...)?

但在这种情况下,我不确定我是否可以在when表达式中引用截取节点的URI。

由于

2 个答案:

答案 0 :(得分:4)

您可以使用通配符拦截并将其与何时执行所需操作相结合,请参阅:http://camel.apache.org/intercept

是Message上的标题,其中包含密钥Exchange.INTERCEPTED_ENDPOINT(CamelInterceptedEndpoint),其中包含截获的端点uri。您可以在匹配谓词的时间使用它。类似的东西:

interceptSendToEndpoint("mock:*")
  .when(simple("${header.CamelInterceptedEndpoint} == ${in.header.DatabaseName}"))
  ...

答案 1 :(得分:0)