两个Kafka消费者应用程序具有相同的group.id和相同的consumer.id

3
我有两个不同的应用程序实例从一个主题中消费消息,两个应用程序具有相同的group.id和consumer.id值。
这些消息只会被一个应用程序读取还是两个应用程序都会读取?如果在两个不同的应用程序中具有相同的consumer.id,它是否被视为一组中的两个消费者,还是仅被视为该组中的单个消费者?
例如:App1实例,group.id = conGrp1,consumer.id = consumer
App2实例,group.id = conGrp1,consumer.id = consumer1
即使运行了两个不同的应用程序实例,我们是否仍然只有一个具有一个消费者的组?
1个回答

1

两个应用程序的group.id和consumer.id的值相同

因此,它们都是同一组的一部分,每个消费者不会重叠消耗数据 - 任何给定消息只能在组的一个消费者中看到

组ID决定了这种行为。我认为,消费者ID只是一个友好的名称,可以在指标或消费者组命令中找到,因此您仍然只有一个组。即使是同一组的唯一应用程序实例具有相同的消费者ID,我认为这并不是一个好主意

Kafka消费者中groupid和consumerid之间的区别


我了解关于群组行为的概念,但对于消费者ID仍然有疑问。所以我的问题是,如果在两个应用实例中有相同的消费者ID,那么群组中会有2个消费者还是1个消费者?我正在使用两个应用实例来实现容错性,如果一个应用崩溃,另一个应用将继续消费消息。 - Atul Kumar
嗯,consumer.id在文档中已经不再提及了,所以我不知道它到底有什么用。http://kafka.apache.org/documentation/#consumerconfigs。话虽如此,这里只考虑`group.id`的作用。 - OneCricketeer
有两个进程正在从主题中轮询,因此在一个组中有两个消费者。当你描述这个组时,你可能只看到一个consumer.id,但我假设这个值是自动设置的,那么为什么你要手动设置它呢? - OneCricketeer
好的...那么我们要如何设置一个组内的消费者数量呢? - Atul Kumar
现在消费者的数量是否直接取决于主题分区?例如,如果我们在同一组(Group1)中有2个主题。 Topic1有2个分区,Topic2有3个分区,那么Kafka消费者会自动在Group1中定义5个消费者吗? - Atul Kumar
不,它并不需要设置。当您使用相同的组ID启动多个应用程序时,它们会自动重新平衡和加入一个组。 - OneCricketeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接