在Kafka重新平衡中是否撤销操作等消耗过程完成?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Kafka重新平衡中是否撤销操作等消耗过程完成?相关的知识,希望对你有一定的参考价值。

例如,如果我在我的一个KafkaConsumer中有一个长时间运行的进程。 (假设需要1小时才能完成。)如果触发了重新平衡,是否会撤消此消费者的操作,等待此消费者在重新平衡之前消耗(处理)已开始处理的消息?

那么可能只是因为这种重新平衡需要花费太多时间吗?

或撤销操作立即完成?

答案

对于新的Java消费者,重新平衡的默认时间是5分钟,并且重新平衡代理将从组中删除该消费者并调用重新平衡之前,它将仅删除该线程但不终止(因此,消费者将处理它启动的所有记录完成它会死)

如果在此会话超时到期之前代理没有收到心跳,则代理将从该组中删除此使用者并启动重新平衡。

如果在此超时到期之前未调用poll(),则认为使用者失败,并且该组将重新平衡以便将分区重新分配给另一个成员。

新的Java Consumer现在支持后台线程的心脏跳动。有一个新配置max.poll.interval.ms,它控制在消费者主动离开组之前的轮询调用之间的最长时间(默认为5分钟)。配置request.timeout.ms的值必须始终大于max.poll.interval.ms,因为这是在消费者重新平衡时JoinGroup请求可以在服务器上阻塞的最长时间,因此我们更改了其默认值到5分钟以上。

以上是关于在Kafka重新平衡中是否撤销操作等消耗过程完成?的主要内容,如果未能解决你的问题,请参考以下文章

消费者再平衡如何在 Kafka 中工作?

即使我暂停消费者,Spring Kafka 也总是在 5 分钟后重新平衡

在 Kafka 中读取消息时的重新平衡问题

Kafka 消费者意外地重新平衡

Apache Kafka 上下文中的“重新平衡”是啥意思?

Kafka Connect 进入重新平衡循环