具有选择器表达式的收件人列表路由器

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

另一种实现相同目的的方法是通过发布-订阅通道和第二个流程开头的过滤器。但我会说您使用收件人列表路由器的方式非常好。

否则不清楚你的问题是什么以及为什么你对继续进行有疑问。