Spring Integration DSL:基于消息有效负载向多个订阅者(而非所有订阅者)发送消息

时间:2020-05-01 03:15:44

标签: spring-integration spring-integration-dsl

我必须创建一个管道来向多个订阅者发送消息,我可以使用publishSubscribeChannel来实现。

但是对于我来说,当我收到消息时-我有一个eventSubType,如

<ns1:eventSubType>0:INIT-SHIP-ASSIGN,BKD,</ns1:eventSubType>

我必须检查eventSubType是否包含INIT-SHIP-ASSIGN,然后将其路由到“ INIT-SHIP-ASSIGN”通道,如果其是“ BKD”,则必须将其路由到“ Booked”通道。同样,我们还有其他eventSubTypes。

我的挑战是-我有5个不同的子类型,在每条消息中我们可以有多个子类型。因此,基于消息中可用的事件子类型(可以大于1),我们必须将消息发送给多个订阅者,而不是所有用户。

请提出建议

1 个答案:

答案 0 :(得分:0)

改为使用recipient list router

.routeToRecipients(r -> r
        .recipient("thing1-channel", "'thing1' == payload")
        .recipientMessageSelector("thing2-channel", m ->
                m.getHeaders().containsKey("recipient")
                        && (boolean) m.getHeaders().get("recipient"))
        ...