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

来源:爱站网时间:2021-09-11编辑:网友分享
例如,如果我在我的一个KafkaConsumer中有一个长时间运行的进程。 (假设需要1小时才能完成。)如果触发了重新平衡,那么这个消费者的撤销操作会等到这个消费者......

问题描述


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

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

或撤销操作立即完成?

解决方法:


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

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

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

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

上一篇:如何使用构建器模拟内部变量

下一篇:为什么这个错误?连接到sts.amazonaws.com:443 [sts.amazonaws.com/54.239.29.25]失败:连接超时:com.amazonaws.SdkClientException

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载