在 RocketMQ 5.0 版本之前,系统提供推(Push)和拉(Pull)两种消息投递方式。

RocketMQ 5.0 引入了一种新的消费模式——Pop 模式,它结合了 Pull 和 Push 的优势,提供了一种高效、低延迟的消息消费方案。

Pop 模式本质上仍属于拉取模式,旨在替代原有的 Push 模式。

在 5.0 之前的 Push 模式(实际基于拉取实现)中,客户端在消费消息前需要通过负载均衡算法确定消费的 Queue。每当消费者数量变化时,都会触发 ReBalance 过程。

由于负载均衡由客户端处理,若均衡耗时过长,会影响消费者的消息处理效率。

此外,该模式存在一个明显限制:无法通过持续增加客户端数量来提升消费能力。当消费者数量达到 Queue 数量上限时,新增的消费者将因无法分配到 Queue 而闲置,这正是传统 Push 模式的性能瓶颈所在。

除了负载均衡外,Push 模式的消费者还需承担消息拉取、消费位点管理等职责,使得客户端逻辑复杂,出错概率增大。

另一个问题是,若某个消费者进程卡死,其分配到的消息队列将无法继续消费,导致消息积压。

为此,RocketMQ 5.0 推出了 Pop 模式来解决这些问题。

在 Pop 模式下,消费者无需感知分区(MessageQueue),消息队列与消费者不再绑定,且消费位点由 Broker 统一管理。消费者直接通过 Pop 接口获取数据,消费成功后返回 ACK。

这种设计的优势在于:消费者仅需专注于消息拉取,无需处理负载均衡和位点管理;即使个别消费者卡死,其他消费者仍可继续消费队列消息,避免消息堆积问题。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐