清除卡住成员的 Kafka 消费者组

Auf*_*gel 11 apache-kafka

我有一个问题,我的许多来自一个消费者组的 Kafka 客户端没有正确关闭,因此 Kafka 集群认为它们仍然连接。因此,我无法使用我的客户端的新版本连接到消费者组。它将卡在重新平衡步骤中。

根据文档,它们应该在session.timeout.msmax 之后删除group.max.session.timeout.ms。一开始我尝试设置session.timeout.ms30000毫秒(30秒),但是在Kafka启动时并没有列出。group.max.session.timeout.ms在那个时间点设置为 300000 毫秒(5 分钟)。30 秒后消费者没有被删除。

之后我尝试减少group.max.session.timeout.ms到 30000 毫秒(30 秒)并重新启动 Kafka。然而,所有的客户都仍然留在消费者组中。

现在,大约 2 小时后,客户端仍然附加到消费者组。

我试图删除消费者组

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
    --delete --group GroupName
Run Code Online (Sandbox Code Playgroud)

这给了我:

* Group 'GroupName' could not be deleted due to: NON_EMPTY_GROUP
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎没有--force标志。

接下来,我尝试使用以下命令列出消费者组的所有成员:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
    --members --group GroupName --describe
Run Code Online (Sandbox Code Playgroud)

这给了我 40-50 个消费者组成员(所有成员都必须处于非活动状态,因为唯一的活动消费者已停止)。

有没有办法让 Kafka 从该组中清除所有消费者或强制它删除整个消费者组?

小智 1

  • 无法删除组“GroupName”,原因是:NON_EMPTY_GROUP

意味着消费者组仍在主动连接到服务器,您必须先终止该进程,然后才能删除消费者组。这对我有用。

ps -ef | grep GroupName | grep -v grep | awk '{print $2}' | xargs kill
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--delete --group GroupName
Run Code Online (Sandbox Code Playgroud)