Pulsar之shared消费模型

Pulsar之shared消费模型_第1张图片
Apache Pulsar 通过订阅的抽象,提供了灵活的消费模型。每一个订阅类似一个 Consumer Group,接收一个 topic 的所有的消息。用户可以使用不同的订阅类型、以不同的模式来共同消费同一个 Topic 中的消息。如果对顺序性有要求,可以使用 Exclusive 和 Failover 的订阅模式,这样同一个 Topic 只有一个 Consumer 在消费,可以保证顺序性。Pulsar 即将发布的 2.4.0 版本添加了一种新的订阅模式: KeyShared。KeyShared 模式保证在 Shared 模式下同一个 Key 的消息也会发送到同一个 Consumer,在并发的同时也保证了顺序性。

Shared模式带来的限制

  • 消息时按照round-robin模式投递给各个Consumer的,所以消息顺序无法得到保障
  • 同样因为round-robin模式,无法使用批量提交acknowledgement的功能

优势

  • 如果使用 Shared 订阅模式,同一组多个 Consumer 可以并发消费同一个 Topic。通过动态增加 Consumer
    的数量,可以加速 Topic 的消费,减少消息在服务端的堆积。
  • 不同subscriptionName(类似不同consumer group)订阅同一个topic,同时获取topic
    的所有的消息,相当于把topic广播给了说有订阅者。订阅组内部按照round-robin模式投递给组内各个Consumer,实现负载均衡。

你可能感兴趣的:(消息队列)