RocketMQ消费者是如何负载均衡的

💡 原文中文,约1600字,阅读约需4分钟。
📝

内容提要

本文介绍了 RocketMQ 的两种消息模式:集群消费和广播消费。集群消费是最常用的消费模式,同一 Topic 下的一条消息只会被同一消费组中的一个消费者消费。负载均衡流程包括发送心跳、启动负载均衡服务等步骤。

🎯

关键要点

  • RocketMQ 支持两种消息模式:集群消费和广播消费。

  • 集群消费模式下,同一 Topic 的消息只会被同一消费组中的一个消费者消费。

  • 广播消费模式下,每条消息会推送给集群内所有消费者,确保每个消费者至少消费一次。

  • 集群消费是最常用的消费模式,理解集群消费有助于掌握广播消费。

  • 启动消费者需要配置消费组名、订阅主题和消息监听器。

  • 消费端的负载均衡是将 Broker 端的多个队列分配给同一消费组中的不同消费者。

  • 负载均衡在消费端启动时、定时任务每20秒触发、消费者上下线时进行。

  • 负载均衡流程包括发送心跳和启动负载均衡服务。

  • 消费者通过心跳包向 Broker 发送信息,Broker 将其维护在本地缓存中。

  • 负载均衡服务根据消费模式进行不同的逻辑处理,主要处理集群模式。

  • 负载均衡过程包括获取消息消费队列、查询消费者 Id 列表、排序和分配消息队列。

  • 平均分配算法用于计算待拉取的消息队列,类似于分页算法。

  • processQueueTable 存储当前负载均衡的队列和消费快照,进行过滤比对操作。

  • 根据比对结果更新 processQueueTable,创建拉取消息请求列表。

➡️

继续阅读