3

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

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

我可以做这样的事情吗?

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

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

我也在考虑做类似的事情:

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

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

谢谢

4

2 回答 2

5

您可以使用通配符进行拦截,并将其与何时执行您想要的操作相结合,详情请参见:http ://camel.apache.org/intercept

这是消息上的标头,其密钥为 Exchange.INTERCEPTED_ENDPOINT (CamelInterceptedEndpoint),其中包含被拦截的端点 uri。您可以在 when 匹配谓词时使用它。有点像:

interceptSendToEndpoint("mock:*")
  .when(simple("${header.CamelInterceptedEndpoint} == ${in.header.DatabaseName}"))
  ...
于 2013-09-24T08:03:02.297 回答
0

使用recipientList说明:http ://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

于 2013-09-24T05:32:23.113 回答