Кафка отправляет сообщения всем потребителям с одинаковым group.id - PullRequest
0 голосов
/ 14 января 2019

По умолчанию Kafka отправляет сообщения из темы всем группам потребителей.

В моем случае у меня есть несколько микроуслуг, которые необходимо изменить. Допустим, у нас есть три экземпляра каждого.

У меня есть служба, которая предоставляет данные, необходимые для каждого из микросервисов. Эта служба публикует необходимые данные, но проблема в том, что при публикации сообщения будет инициализирован только один экземпляр каждого микро приложения.

Мне нужно найти способ отправки данных во все экземпляры каждого микросервиса. Это обязательные метаданные.

Я не знаю, как получить такое поведение, и я не могу изменить group.id s, потому что тогда службы будут использовать одни и те же сообщения дважды.

1 Ответ

0 голосов
/ 14 января 2019

Тем временем я нашел ответ.

Я могу получить это, определив несколько слушателей в приложении. Каждый слушатель будет подписываться на его тему, и каждый слушатель будет частью другой group.id.

https://docs.spring.io/spring-kafka/reference/htmlsingle/#_annotation_properties

Из весенних документов kafka видно, что аннотация слушателя kafka принимает в качестве параметров темы и идентификатор группы.

Таким образом, у меня может быть три экземпляра приложения I1, I2, I3 со следующей конфигурацией:

T1:
 @KafkaListener(topics = "ORDER_TOPIC", groupId = "order_consumer_group")
 @KafkaListener(topics = "METADATA_TOPIC", groupId = "metadata_topic_uuid1")
T2:
 @KafkaListener(topics = "ORDER_TOPIC", groupId = "order_consumer_group")
 @KafkaListener(topics = "METADATA_TOPIC", groupId = "metadata_topic_uuid2")
T3:
 @KafkaListener(topics = "ORDER_TOPIC", groupId = "order_consumer_group")
 @KafkaListener(topics = "METADATA_TOPIC", groupId = "metadata_topic_uuid3")
...