Spring Integration DSL: отправка сообщений нескольким подписчикам (не всем подписчикам) на основе полезной нагрузки сообщения - PullRequest
1 голос
/ 01 мая 2020

Мне нужно создать конвейер для отправки сообщений нескольким подписчикам, я могу добиться этого с помощью publishSubscribeChannel.

Но в моем случае, когда я получаю сообщение - у меня есть eventSubType наподобие

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

Я должен проверить, содержит ли eventSubType INIT-SHIP-ASSIGN, тогда я направлю его на o " INIT-SHIP-ASSIGN ", и если это" BKD ", то я должен направить его на" забронированный "канал. Точно так же у нас есть другие eventSubTypes.

Моя задача - у меня есть 5 разных подтипов, и в каждом сообщении мы можем иметь несколько подтипов. Таким образом, основываясь на подтипах событий (может быть больше 1), доступных в сообщении, мы должны отправить сообщение нескольким подписчикам, но не всем подписчикам.

Пожалуйста, предложите

1 Ответ

0 голосов
/ 01 мая 2020

Вместо этого используйте маршрутизатор списка получателей .

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