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

问题描述 投票:1回答:1

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

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

或撤销操作立即完成?

java apache-kafka kafka-consumer-api
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.