具有选择器表达式的收件人列表路由器
Recipient list Router with selector expression
我正在队列中获取字符串消息。我正在使用它并使用以下通道进行进一步处理 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
您的配置是正确的,它确实是收件人列表路由器的经典示例。您无条件地向 processMessage
发送消息,如果符合选择器表达式,则将相同的消息发送到 publishToQueue
。
另一种实现相同目的的方法是通过发布-订阅通道和第二个流程开头的过滤器。但我会说您使用收件人列表路由器的方式非常好。
否则不清楚你的问题是什么以及为什么你对继续进行有疑问。
我正在队列中获取字符串消息。我正在使用它并使用以下通道进行进一步处理 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
您的配置是正确的,它确实是收件人列表路由器的经典示例。您无条件地向 processMessage
发送消息,如果符合选择器表达式,则将相同的消息发送到 publishToQueue
。
另一种实现相同目的的方法是通过发布-订阅通道和第二个流程开头的过滤器。但我会说您使用收件人列表路由器的方式非常好。
否则不清楚你的问题是什么以及为什么你对继续进行有疑问。