我正在使用以下 IntegrationFlow 表单,我通过以下方式按标题值过滤主题消息:
IntegrationFlows.from (
Jms.messageDrivenChannelAdapter ( Jms.container(factory, connection)
.messageSelector("X-HEADER = 'X_VALUE'")
.get()
)
.get()
)
.handle(XMessageHandler)
.get();
..或任何一个
IntegrationFlows.from (
Jms.messageDrivenChannelAdapter ( Jms.container(factory, connection)
.get()
)
.get()
)
.filter(Message.class, filterByHeaderPropertySelector(X_HEADER, X_VALUE)
.handle(XMessageHandler)
.get();
但是现在,一个新类型的期望流加入了话题,所以判别器头有一个新的值 Y。所以一个新的过滤器filter(Message.class, filterByHeaderPropertySelector(Y_HEADER, Y_VALUE)
,目标为YMessageHandler
。
我的问题是如何以最小的影响重用基础设施。将过滤器与路由一起使用是理想的,但route
操作似乎并没有以相同的方式内联。也许有更简单/明显的方法?
另外,我应该为每个消息选择器复制适配器吗?将消息选择器放在容器设置中或将其作为集成流程的一部分有什么区别。是否有任何性能损失或集成构建器是否巧妙地优化了它?我的意思是,很可能将选择器放在流上并不能避免解析消息等,而在容器的定义上它只是从头开始过滤它。解决这个问题的最佳方法是什么?