Pulsar四种订阅模式

订阅是命名好的配置规则,指导消息如何投递给消费者。 Pulsar 中有四种订阅模式: 独占,共享,灾备和key共享

订阅模型

1. 独占 Exclusive

Exclusive模式为默认订阅模式。

在独占模式下,仅允许单个使用者附加到订阅。如果多个使用者使用相同的订阅来订阅主题,则会发生错误。

在下图中,仅允许消费者A-0消费消息。

独占订阅

2. 灾备 Failover

在灾备模式下,多个使用者可以附加到同一订阅。当主消费者断开连接时,所有(未确认和随后的)消息将在线传递给下一个消费者。

对于分区主题来说,Broker 将按照消费者的优先级和消费者名称的词汇表顺序对消费者进行排序。 然后试图将主题均匀的分配给优先级最高的消费者。

对于非分区主题来说,broker 会根据消费者订阅非分区主题的顺序选择消费者。

在下图中,如果消费者B-0断开连接,则消费者B-0是主要消费者,而消费者B-1将是下一个接收消息的下一个消费者。

灾备订阅

3. 共享 Shared

在共享或轮询模式下,多个使用者可以连接到同一订阅。消息通过轮询机制分发给不同的消费者,并且每个消息仅会被分发给一个消费者。当消费者断开连接,所有被发送给他,但没有被确认的消息将被重新安排,分发给其他存活的消费者。

在下图中,Consumer-C-1和Consumer-C-2可以订阅该主题,但是Consumer-C-3和其他用户也可以订阅该主题。

共享订阅

4. Key共享模式 Key_Shared

在基于Key共享模式下,多个使用者可以附加到同一订阅。消息在各个使用者之间进行分发,并且具有相同Key或相同指令Key的消息仅传递给一个使用者。不管消息被重新发送多少次,它都会被发送到同一消费者。当消费者连接或断开连接时,将导致服务的消费者更改某些消息Key。

Key_Shared模式的局限性

当您使用Key_Shared模式时,请注意:

  • 您需要为消息指定key或ordering Key。
  • 您不能在Key_Shared模式下使用累积确认。
  • 生产者应禁用批处理或使用基于密钥的批处理生成器。

Key_Shared subscriptions

可以在 broker.config 中禁用 Key_Shared 模式。

client-libraries-go中消费订阅模式的定义

image-20210426163603184

image-20210426163847579