请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

一个partition不能被同一个组中的多个cusumer同时消费

https://img1.sycdn.imooc.com//szimg/60963af6094f993207770357.jpg

启动两个cusumer消费partition1和partition2,之前提过一个partition不能被同一个组中的多个cusumer同时消费,但是我这里打印cusumer1和cusumer2都消费到了partition1和partition2,请问老师这是什么原因呢

https://img1.sycdn.imooc.com//szimg/60963c5709182f5f13570821.jpg

正在回答

3回答

Allen 2021-05-08 16:47:50

这不就是两个consumer分别消费两个partition么。。

1 回复 有任何疑惑可以回复我~
  • 我理解的是 cosumer1和comsumer2是在一个分组中的,然后topic有两个partition0和partition1,结果应该是cosumer1或者comsumer2只能消费到其中的一个partition,而不是comsumer1消费到了partition1和partition2,comsumer2也消费到了partition1和partition2,这就出现了同一个partition被同一个分组中的两个cusumer消费了
    回复 有任何疑惑可以回复我~ 2021-05-08 17:06:11
  • Allen 回复 提问者 后端Bug开发工程师 #2
    你理解的没错呀,或者也有可能同一个consumer消费两个partition, 这是kafka的loadbalance决定的
    回复 有任何疑惑可以回复我~ 2021-05-10 10:28:05
  • 提问者 后端Bug开发工程师 回复 Allen #3
    对的,但是我上面的代码是经典版启动的两个线程comsumer1和comsumer2,comsumer1和comsumer2都是同一个分组下的,但是控制台打印的时候comsumer1和comsumer2同时都消费到了partition1和partition2,所以就对这块有点疑问
    回复 有任何疑惑可以回复我~ 2021-05-11 15:47:34
提问者 后端Bug开发工程师 2021-05-12 09:49:58

https://img1.sycdn.imooc.com//szimg/609b33f4093a839a07640151.jpg

找到原因了,与subscirbe方法不同,assign的consumer不会拥有kafka的group management机制,也就是当group内消费者数量变化的时候不会有reblance行为发生。

3 回复 有任何疑惑可以回复我~
提问者 后端Bug开发工程师 2021-05-11 21:01:28

https://img1.sycdn.imooc.com//szimg/609a80110908bede09290324.jpg

不知道是不是公司电脑的问题,家里面的电脑测出来和预想结果一致,谢谢老师

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信