默认情况下,Kafka将消息从主题发送到所有消费者组。
就我而言,我有一些微服务需要重新调整规模。假设每个实例都有三个实例。
我有一项服务,可提供每个微服务所需的数据。该服务正在发布所需的数据,但问题是发布消息时,每个微型应用程序只有一个实例将被初始化。
我需要找到一种将数据发送到每个微服务的所有实例的方法。这是强制性的元数据。
我不知道如何获得此行为,并且无法更改group.id
,因为那样一来,服务将消耗两次相同的消息。
答案 0 :(得分:0)
与此同时,我找到了答案。
我可以通过在应用程序中定义多个侦听器来获得此信息。每个听众都将订阅其主题,每个听众都将属于不同的group.id
。
https://docs.spring.io/spring-kafka/reference/htmlsingle/#_annotation_properties
从春季的kafka文档中,我们可以看到kafka侦听器批注将主题和组ID接受为参数。
这样,我可以通过以下配置拥有应用程序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")