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

时间:2019-09-09 17:53:28

标签: apache-kafka apache-kafka-streams

我是kafka的新手,所以我只是在阐明我的kafka概念。

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

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

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

1 个答案:

答案 0 :(得分:4)

简而言之:

  • client.id(用于producerconsumer)设置单个Kafka生产者或消费者客户的名称。
  • group.id设置单个Kafka消费者客户端所属的Kafka consumer group的名称。
  • application.id是仅由Kafka Streams用来命名应用程序(即使用Kafka Streams库的应用程序(可以在1个以上应用程序实例上运行)的应用程序)的设置。在幕后,application.id还用于设置group.idclient.id