Apache Pulsar和RocketMQ在消费模型上确实有所不同,但通过调整配置和设计,Pulsar也可以实现多个消费组消费同一个Topic的效果。
具体来说:

RocketMQ的消费模型

RocketMQ的消费组(Consumer Group)是逻辑上的分组,它允许多个消费组消费同一个Topic独立运行。不同的消费组彼此独立,每个组中的消费者根据订阅的消息队列分配消息,保证组内的消息不会重复消费。

Pulsar的消费模型

Pulsar内部使用订阅(Subscription)来管理消费模式,主要有以下四种:

  • Exclusive(独占)只有一个消费者能订阅,其他消费者无法订阅同一个Subscription。
  • Failover(故障转移)多个消费者可以订阅同一个Subscription,但只有一个处于活动状态(主消费者)。当主消费者挂掉时,其余消费者自动接管。
  • Shared(共享)多个消费者可以订阅同一个Subscription,消息会在消费者之间进行负载均衡,消息会被分发给订阅组中的多个消费者。
  • Key_Shared(按键共享)类似于Shared模式,但它会根据消息的键值(Key)来决定消息分发的方式。具有相同Key的消息总是由同一个消费者进行消费。

Pulsar实现多个消费组消费同一个Topic

在Pulsar中,**多个消费组消费同一个Topic**的效果可以通过创建多个Subscription来实现。每个消费组对应于一个独立的Subscription(类似于RocketMQ的Consumer Group),每个Subscription可以使用不同的消费模式(Exclusive、Failover、Shared、Key_Shared)。

配置方法

  • 创建多个订阅设置每个消费组使用一个唯一的Subscription名称。例如:
    • 消费组 A 使用 subscriptionA
    • 消费组 B 使用 subscriptionB
      • 两个消费组可以独立消费同一个Topic。
  1. 独立处理各自订阅的消息每个消费组中的消费者使用它们自己的Subscription名称来订阅消息。例如:
    1. 消息重复性每个Subscription维持自己的消费状态(offset),所以同一个消息会被各个订阅消费一次。这符合多个消费组消费同一个Topic的需求。

    总结

    虽然Pulsar的模型是基于Subscription而不是像RocketMQ的Consumer Group。但通过多Subscription的方式,可以达到多个消费组独立消费同一个Topic的效果。



    pulsar能不能像rocketmq一样 多个消费组可以消费同一个topic插图

    关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

    除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

    本文链接:http://www.choupangxia.com/2025/09/14/pulsar-rocketmq-topic/