rocketmq队列和消费者关系

发布于 2022-09-13 00:40:57 字数 822 浏览 37 评论 0

同一个 topic,同一个 consumer group

只开一个消费者

这里是一个消费者终端可以监听四个队列的消息嘛?

在这里插入图片描述

开两个消费者

这里是两个消费者终端,一人监听两个队列的消息?

在这里插入图片描述

开三个消费者

在这里插入图片描述

开四个消费者

连续发四个消息,有三个消息是被同一个消费者消费。

在这里插入图片描述

开五个消费者

为什么是 @860 那台消费者被挤掉了?
连续发八个消息,之前的那台确实收不到消息了。

在这里插入图片描述

问题

  1. 一个 topic 配置了四个队列的话,那一个 consumer group 下最多只能有四个监听的消费者?
  2. 消费者数超过队列数,剔除消费者的策略是什么?
  3. 同一个消费者组下的消费者是轮询获取消息的嘛,为什么几次测试有时候是,有时候不是?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪失控 2022-09-20 00:40:57
  1. 是的,一个队列只能被最多一个消费者消费,因此消费者实例数量超过队列数量时,超出部分不能消费消息
  2. 剔除策略取决于队列分配策略(org.apache.rocketmq.client.consumer.AllocateMessageQueueStrategy),默认(org.apache.rocketmq.client.consumer.rebalance.AllocateMessageQueueAveragely)按照消费者实例id(ip@pid)排序,最大的消费者实例id没有分配到队列,也就是会被剔除
  3. 消费者对队列负载均衡,只有消费均匀的发送到队列时,消费时才看起来是均衡的,你可以多发送点消息,增加统计样本,看看是否均匀的发送到每个队列
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文