订阅
订阅是命名好的配置规则,指导消息如何投递给消费者。Pulsar提供四种订阅模式:独占、共享、故障切换和密钥共享。这些模式如下图所示。
Pub-Sub or Queuing
在Pulsar中,您可以灵活使用不同的订阅。如果你想在消费者当中使用传统的”发布-订阅消息“,你可以为每个消费者指定一个特定的订阅名称,这是独家订阅模式。 如果你想在消费者当中实现”消息队列“的效果,则多个消费者会拥有相同的订阅名称(如共享模式,灾备模式,key共享模式)。*如果您想同时实现这两种效果,请将独家订阅模式与消费者的其他订阅模式相结合。
无用户订阅及其模式
如果订阅没有使用者,则其订阅模式未定义。订阅的模式是在使用者连接到订阅时定义的,可以通过使用不同的配置重新启动所有使用者来更改模式。
Exclusive(独占)
在独占模式下,仅允许一个消费者附加到订阅。如果多个使用者使用同一订阅订阅一个主题,则会发生错误。
在下图中,只允许消费者A-0使用消息。
独占模式是默认的订阅模式。
Failover(灾备)
在故障转移模式下,多个用户可以附加到同一订阅。主消费者会消费非分区主题或者分区主题中的每个分区的消息。当主用电设备断开连接时,所有(未确认和后续)消息都会传递给队列中的下一个用电设备。
对于分区主题来说,Broker 将按照消费者的优先级和消费者名称的词汇表顺序对消费者进行排序。 然后试图将主题均匀的分配给优先级最高的消费者。
对于非分区主题来说,broker 会根据消费者订阅非分区主题的顺序选择消费者。
在下图中,如果Consumer-B-0断开连接,Consumer-B-0是主消费者,而Consumer-B-1将是下一个接收消息的消费者。
Shared(共享)
在共享或循环模式下,多个使用者可以附加到同一订阅。消息通过round robin轮询机制分发给不同的消费者,并且每个消息仅会被分发给一个消费者。 当消费者断开连接,所有被发送给他,但没有被确认的消息将被重新安排,分发给其它存活的消费者。
在下图中,Consumer-C-1和Consumer-C-2可以订阅该主题,但Consumer-C-3和其他人也可以订阅。
共享模式的局限性
使用共享模式时,请注意:*不保证消息顺序。*不能在共享模式下使用累积确认。