我在队列中获取字符串消息。我正在使用以下渠道processMessage
进行进一步处理。
现在我有一个要求,我需要根据下面提到的选择器表达式将此消息发送到另一个队列。
同时我需要确保我没有遗漏processMessage
频道中的任何记录。假设下面的配置好了吗?
还是有更好的方法来处理这个问题:
<int:recipient-list-router id="router" input-channel="incomingMsg">
<int:recipient channel="publishToQueue" selector-expression="payload.contains('test trade') "/>
<int:recipient channel="processMessage"/>
</int:recipient-list-router>
<task:executor id="executor" pool-size="10" />
<int:publish-subscribe-channel id="publishToQueue" task-executor="executor"/>
合乎逻辑的解释是:
IF payload.contains(test trade)
THEN
PublishToQueue
END IF
ProcessMessage
答案 0 :(得分:1)
您的配置是正确的,它实际上是收件人列表路由器的经典示例。您无条件地向processMessage
发送消息,如果它适合选择器表达式,则会向publishToQueue
发送相同的消息。
通过发布 - 订阅频道和第二个流开头的过滤器,可以实现另一种方法。但我会说你用收件人列表路由器的方式非常好。
否则不清楚你的问题是什么以及为什么你有疑问继续。