在Kafka中强制使用唯一的使用者组ID

nik*_*kel 4 consumer apache-kafka kafka-consumer-api

我们正在制作一个Kafka Queue,从源系统发布消息.现在,多个使用者可以连接到此队列以读取消息.

在执行此操作时,消费者必须指定基于其分发消息的groupId,如果两个应用具有相同的groupId,则它们都不会获得消息.

有没有办法可以强制执行每个应用程序.拥有一个独特的消费者群体ID?

pha*_*aas 8

Kafka不是命名注册表,但是您可以使用许多其他策略来分配没有协调器的唯一组名:

  • 根据应用程序命名组.两个应用程序将分别获取所有数据,因为它们的名称是唯一的.
  • 根据组写入的数据存储命名组(例如,jdbc连接字符串).如果您为其他数据库启动应用程序实例,它将具有自己的偏移量
  • 根据实现使用者的(规范)类名称命名该组.如果您的应用程序在不同的Java类中实现了两个使用者,那么他们将获得不同的groupIds
  • 为组分配随机值(例如UUID).在重新启动时,将创建一个新组.