动态拦截骆驼端点

Kla*_*aus 3 apache-camel intercept

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

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

我可以做这样的事情吗?

interceptSendToEndpoint("mock:${in.header.DatabaseName}")
Run Code Online (Sandbox Code Playgroud)

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

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

interceptSendToEndpoint("mock:*").when(...)?
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Cla*_*sen 5

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

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

interceptSendToEndpoint("mock:*")
  .when(simple("${header.CamelInterceptedEndpoint} == ${in.header.DatabaseName}"))
  ...
Run Code Online (Sandbox Code Playgroud)