kafka 中 b/w group.id、application.id 和 client.id 有什么区别?

What is difference b/w group.id, application.id and client.id in kafka?

我是kafka的新手,所以我只是在清理我的kafka概念。

我创建了一个简单的流式应用程序,它从具有两个分区的单个主题流式传输数据。我有这个应用程序的两个实例(我是基于两个项目中相同的 application.id 说的)。当我启动应用程序的第三个实例时,出现错误。由此,我了解到 kafka 中的 application.id 被视为消费者组 ID,其中单个消费者可以从主题的单个分区中读取,而第三个消费者没有得到任何信息,因此未能针对该主题进行存储。

我还尝试了另一种情况,我在其中一个应用程序中更改了 application.id。因此,通过这样做,应用程序的第三个实例也开始正常工作。所以它证实了我的假设,即 application.id 被视为消费者组 id。

但我也注意到group.id、client.id也在那里,这让我很困惑。在我们的项目中使用 group.id、client.id 的目的是什么,这些属性是什么以及它们如何工作。我为所有三个应用程序设置了相同的组 ID。

简而言之:

  • client.id(对于producer and for consumer)设置单个 Kafka 生产者或消费者客户端的名称。
  • group.id sets the name of the Kafka consumer group 单个 Kafka 消费者客户端所属。
  • application.id is a setting only used by Kafka Streams to name an application, i.e., an application that uses the Kafka Streams library (which can be run on one or more app instances). Behind the scenes, the application.id is also used to generate group.id and client.ids. See the application.id 文档以获取更多信息。