Dawn's Blogs

分享技术 记录成长

0%

Pulsar消息队列(3)订阅模式

Consumer 订阅 Topic 的时候,通过订阅模式来控制消息的使用模式,指定如何将消息投递给一个组一个的或多个的 Consumer。Pulsar 支持 4 种订阅模式:

  • exclusive(独占模式)
  • failover(故障转移模式,也叫灾备模式)
  • shared(共享模式)
  • key-shared(基于key的共享模式)

订阅模式

exclusive

独占模式,只能有一个 Consumer 绑定到订阅上。如果多于一个 Consumer 尝试以使用相同的订阅订阅 Topic,就会抛出异常且无法连接。

pulsar-exclusive-subscriptions.png

failover

在灾备订阅模式中,多个 Consumer 可以绑定到同一个订阅上, Consumer 将会按字典顺序排序第一个 Consumer 被初始化为唯一接受消息的消费者,被称为 Master Consumer。 当 Master Consumer 断开时,所有的未被确认和后续进入的消息将会被投递给下一个 Consumer。

灾备模式提供了高可用性。

pulsar-failover-subscriptions.png

shared

在共享模式中,多个 Consumer 可以绑定到同一个订阅上。 消息通过 round robin 轮询机制分发给不同的消费者,并且每个消息仅会被分发给一个消费者。 当一个消费者断开连接时,所有已经投递给它但还没有被确认的消息将被重新投递,分发给其它存活的消费者。

pulsar-shared-subscriptions.png

key-shared

key-shared 模式是共享模式的一种特例,它也允许多个 Consumer 可以绑定到同一个订阅上,与共享模式中的 round robin 轮询消费消息不同,key-shared 模式增加了一个辅助 key,确保具有相同 key 的消息被交付给相同的消费者