Kafka Consumer - 暂停时继续调用 poll()?
Kafka Consumer - continue calling poll() while paused?
我阅读了有关为 kafka 消费者使用暂停和恢复方法的文档,它们似乎很容易实现。但是,是否需要另一个线程在暂停时继续调用poll()方法以满足心跳要求而不触发rebalance?
我的消费者在轮询主题后正在 运行 宁 SQL 脚本并根据返回的消息,脚本可能需要比当前 session.timeout.ms 间隔更长的时间(我们增加了这个值,但脚本到 运行 的时间长度可能会略有不同,无论间隔时间如何,我们有时都会超过它)。我还想避免重新平衡,因为安全排序和数据完整性比吞吐量和错误延迟更重要。
从版本 0.10.1.0 开始,心跳通过单独的线程发送,因此暂停进程线程不会影响心跳线程。
您可以查看 this 了解更多信息。
是的,您需要继续对消费者调用 poll()
,即使您暂停了所有分区,否则它将被踢出其所属的任何消费者组,并且其分配的分区将转移到另一个消费者组消费者。至于哪个线程最终调用 poll - 这无关紧要(只要一次只有一个线程与消费者交互)
引自kip-62:
max.poll.interval.ms. This config sets the maximum delay between client calls to poll(). When the timeout expires, the consumer will stop sending heartbeats and send an explicit LeaveGroup request.
我阅读了有关为 kafka 消费者使用暂停和恢复方法的文档,它们似乎很容易实现。但是,是否需要另一个线程在暂停时继续调用poll()方法以满足心跳要求而不触发rebalance?
我的消费者在轮询主题后正在 运行 宁 SQL 脚本并根据返回的消息,脚本可能需要比当前 session.timeout.ms 间隔更长的时间(我们增加了这个值,但脚本到 运行 的时间长度可能会略有不同,无论间隔时间如何,我们有时都会超过它)。我还想避免重新平衡,因为安全排序和数据完整性比吞吐量和错误延迟更重要。
从版本 0.10.1.0 开始,心跳通过单独的线程发送,因此暂停进程线程不会影响心跳线程。
您可以查看 this 了解更多信息。
是的,您需要继续对消费者调用 poll()
,即使您暂停了所有分区,否则它将被踢出其所属的任何消费者组,并且其分配的分区将转移到另一个消费者组消费者。至于哪个线程最终调用 poll - 这无关紧要(只要一次只有一个线程与消费者交互)
引自kip-62:
max.poll.interval.ms. This config sets the maximum delay between client calls to poll(). When the timeout expires, the consumer will stop sending heartbeats and send an explicit LeaveGroup request.