由于 运行 消费者线程 [#t1] 长而发生重新平衡 - 同一线程会加入重新平衡吗?
Rebalance happens due to long running consumer thread [#t1] - Will the same thread join the rebalance?
我想知道当rebalance发生时当前处理消费者线程发生了什么?
考虑三个消费者线程 运行 并且我有一个主题 x 的三个分区。
max.poll.interval.ms= 500000
session.timeout.ms = 50000
heartbeat.interval.ms = 15000
max.poll.records = 1
消费者线程#t1 -> 调用一些服务并等待无限的套接字超时。这意味着线程#t1 在最坏的情况下不会再次调用 poll。一旦超过 500000 次,就会触发本次再平衡
消费者线程 #t2 和消费者线程 #t3-> 将参与 poll() 方法调用的重新平衡,因为它们工作正常。
现在,重新平衡时线程 t1 发生了什么?
线程 t1 是否会被杀死,并在重新分配分区时考虑
或者它会持续 运行 吗?
因为我们在应用程序 onRebalance 中看到所有线程 t1、t2 和 t3 正在再次分配分区。那么线程是如何以及在代码中的什么地方被杀死的?
正在使用
- spring-boot version -- 2.2.6 release
- spring-kafka - 2.3.7 版本
- kafka-客户端-2.3.1
- apache-kafka - kafka_2.12-2.3.1
线程不会被kill掉(或者中断,但是socket读取无论如何是不可中断的,需要设置超时时间)。
当线程最终returns时(如果有),它会触发另一次再平衡。
我想知道当rebalance发生时当前处理消费者线程发生了什么?
考虑三个消费者线程 运行 并且我有一个主题 x 的三个分区。
max.poll.interval.ms= 500000
session.timeout.ms = 50000
heartbeat.interval.ms = 15000
max.poll.records = 1
消费者线程#t1 -> 调用一些服务并等待无限的套接字超时。这意味着线程#t1 在最坏的情况下不会再次调用 poll。一旦超过 500000 次,就会触发本次再平衡
消费者线程 #t2 和消费者线程 #t3-> 将参与 poll() 方法调用的重新平衡,因为它们工作正常。
现在,重新平衡时线程 t1 发生了什么?
线程 t1 是否会被杀死,并在重新分配分区时考虑
或者它会持续 运行 吗?
因为我们在应用程序 onRebalance 中看到所有线程 t1、t2 和 t3 正在再次分配分区。那么线程是如何以及在代码中的什么地方被杀死的?
正在使用
- spring-boot version -- 2.2.6 release
- spring-kafka - 2.3.7 版本
- kafka-客户端-2.3.1
- apache-kafka - kafka_2.12-2.3.1
线程不会被kill掉(或者中断,但是socket读取无论如何是不可中断的,需要设置超时时间)。
当线程最终returns时(如果有),它会触发另一次再平衡。