我是kafka的新手,所以我只是在阐明我的kafka概念。
我创建了一个简单的流应用程序,该应用程序从具有两个分区的单个主题流数据。我有这个应用程序的两个实例(我在两个项目中都是基于同一个application.id来说的)。当启动应用程序的第三个实例时,出现错误。据此,我了解到kafka中的application.id被视为消费者组ID,其中单个消费者可以从主题的单个分区读取,而第三个消费者则没有得到任何信息,因此无法针对该主题进行存储。
我还尝试了另一种情况,其中我在一个应用程序中更改了application.id。因此,通过这样做,该应用程序的第三个实例也开始正常工作。因此,它证实了我的假设,即application.id被视为消费者组ID。
但是我也注意到group.id,client.id也存在,这使我感到困惑。在我们的项目中使用group.id,client.id的目的是什么,这些属性是什么以及它们如何工作。我为所有三个应用程序都设置了相同的组ID。
答案 0 :(得分:4)
简而言之:
client.id
(用于producer和consumer)设置单个Kafka生产者或消费者客户的名称。group.id
设置单个Kafka消费者客户端所属的Kafka consumer group的名称。 application.id
是仅由Kafka Streams用来命名应用程序(即使用Kafka Streams库的应用程序(可以在1个以上应用程序实例上运行)的应用程序)的设置。在幕后,application.id
还用于设置group.id
和client.id
。