我正在尝试拦截 URI 的值与交换 header 中的某些信息匹配的端点。
假设我在 header 中有一个名为 DatabaseName 的字段。我想强制执行特定路由仅写入 header 中指定的数据库。
我可以做这样的事情吗?
interceptSendToEndpoint("mock:${in.header.DatabaseName}")
我试过了,但是好像不行。我有哪些选择?
我也在考虑做这样的事情:
interceptSendToEndpoint("mock:*").when(...)?
但在这种情况下,我不确定我是否可以在when表达式中引用被拦截节点的URI。
谢谢
最佳答案
您可以使用通配符进行拦截,并将其与何时执行您想要的操作相结合,详情请参阅:http://camel.apache.org/intercept
消息上的 header 具有键 Exchange.INTERCEPTED_ENDPOINT (CamelInterceptedEndpoint),它具有被拦截的端点 uri。您可以在 when 中使用它来匹配谓词。类似的东西:
interceptSendToEndpoint("mock:*")
.when(simple("${header.CamelInterceptedEndpoint} == ${in.header.DatabaseName}"))
...
关于apache-camel - 动态拦截 Camel 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972834/