Уникальный идентификатор для Spring Integration - PullRequest
0 голосов
/ 08 мая 2018

У меня есть очередь публикации / подписки в Spring Integration.Как только сообщение помещено в очередь, я вижу, что генерируется новый идентификатор сообщения и разные идентификаторы сообщения для каждого из подписчиков.Я хочу использовать исходный уникальный идентификатор сообщения в качестве уникального идентификатора, пока он проходит через различных подписчиков микросервисов.Могу ли я получить исходный идентификатор сообщения от каждого из подписчиков?

Также, если бы у меня было несколько экземпляров Spring Spring, записывающих сообщения в одну очередь kafka, будет ли идентификатор сообщения уникальным?

1 Ответ

0 голосов
/ 08 мая 2018

Я думаю, что Кафка заслуживает своего собственного вопроса ТАК. Число рейнольдса один и тот же идентификатор для всех подпотоков : как насчет applySequence = true для PublishSubscribeChannel, и каждая копия сообщения будет отправляться с заголовками Sequence Details, где IntegrationMessageHeaderAccessor.CORRELATION_ID является точной копией исходного сообщения

Проблема с Messaging в том, что каждое новое сообщение должно быть действительно новым уникальным объектом. Таким образом, каждое сообщение представляет собой единое целое, и оно не влияет на всех остальных и даже может не знать об их существовании. без сохранения состояния является одной из целей согласованности сообщений как таковых.

Поэтому, если вы хотите использовать какой-либо идентификатор для всех сообщений, вам следует использовать другой заголовок, а не id. Для этой цели платформа уже предусматривает ваш обычный механизм, называемый корреляция и подробности последовательности : https://docs.spring.io/spring-integration/docs/5.0.4.RELEASE/reference/html/messaging-channels-section.html#channel-configuration-pubsubchannel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...