在kafka中强制唯一的消费者组id

h7wcgrx3  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(440)

我们正在创建一个kafka队列,消息将从源系统发布到该队列中。现在,多个使用者可以连接到此队列以读取消息。
在执行此操作时,消费者必须指定一个groupid,根据该groupid分发消息,如果两个应用程序具有相同的groupid,则两个应用程序都无法获取消息。
有没有办法我可以强制每个应用程序。要拥有唯一的消费者组id?

osh3o9ms

osh3o9ms1#

kafka不是一个命名注册表,但是您可以使用许多其他策略来分配没有协调器的唯一组名:
根据应用程序命名组。两个应用程序将各自获取所有数据,因为它们的名称是唯一的。
根据要写入的数据存储区(例如jdbc连接字符串)命名组。如果您为不同的数据库启动一个应用程序示例,它将有自己的偏移量
根据实现使用者的(规范)类名命名组。如果你的应用有两个消费者在不同的java类中实现,他们将得到不同的groupid
为组分配一个随机值(例如uuid)。重新启动时,将创建一个新组。

osh3o9ms

osh3o9ms2#

不,如果不改变kafka的源代码,就无法做到这一点,因为consumergroup是kafka的一个主要(而且非常有价值)特性,它允许您避免使用v0.8中的低级consumer。当您想并行化单个主题的使用时(通常来自不同的主机)。
但您也许可以建立一个独立的服务,向消费者发布名称。或者你可以指示所有消费者客户使用随机数作为名称后缀,或者类似的东西。

相关问题