收件人列表路由器与选择器表达式

时间:2018-01-03 09:19:27

标签: spring spring-integration router

我在队列中获取字符串消息。我正在使用以下渠道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

1 个答案:

答案 0 :(得分:1)

您的配置是正确的,它实际上是收件人列表路由器的经典示例。您无条件地向processMessage发送消息,如果它适合选择器表达式,则会向publishToQueue发送相同的消息。

通过发布 - 订阅频道和第二个流开头的过滤器,可以实现另一种方法。但我会说你用收件人列表路由器的方式非常好。

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