相关疑难解决方法(0)

什么决定卡夫卡消费者的抵消?

我对卡夫卡比较新.我已经做了一些实验,但有一些事情我不清楚消费者抵消.从我到目前为止所理解的情况来看,当消费者开始时,它将开始读取的偏移量由配置设置决定auto.offset.reset(如果我错了,请纠正我).

现在说,例如主题中有10条消息(偏移0到9),并且消费者在它关闭之前(或者在我杀死消费者之前)恰好消耗了其中的5条消息.然后说我重启那个消费者流程.我的问题是:

  1. 如果auto.offset.reset设置为smallest,它是否总是从偏移量0开始消耗?

  2. 如果auto.offset.reset设置为largest,是否将从偏移量5开始消耗?

  3. 关于这种情况的行为总是确定的吗?

如果我的问题中的任何内容不清楚,请不要犹豫.提前致谢.

java distributed-computing apache-kafka

151
推荐指数
3
解决办法
7万
查看次数

清除卡住成员的 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 从该组中清除所有消费者或强制它删除整个消费者组?

apache-kafka

11
推荐指数
1
解决办法
3993
查看次数

标签 统计

apache-kafka ×2

distributed-computing ×1

java ×1