去调用重平衡监听器中onPartitionRevoked()
的是谁,是在poll的那条线程吗?
consumer_offset里面存储的消费offset。
kafka是批量拉取消息的,一次拉取2000-3000
条,当poll()
时,kafka消费者组内发生了重新平衡时,是不会影响正在处理的消费者的。
举个场景吧,比如:
消费者A,正在处理P1和p2的分区,当有新的消费者B出现时,触发消费者平衡,kafka将p2分给了B消费者。这时,消费者A处理完拉取到的p2消息,提交完offset之后,不会在接收到新p2消息了,这时消费者B开始处理。
所以,这里的重点是提交完offset之后
,因为对于kafka来讲,offset提交之后,就已经认定消费了,消费者B则接着开始消费。