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。
谢谢
您可以使用通配符进行拦截,并将其与何时执行您想要的操作相结合,详情请参见: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)