美文网首页
【Pulsar 精选】入门 Pulsar 消息机制

【Pulsar 精选】入门 Pulsar 消息机制

作者: 熊本极客 | 来源:发表于2022-08-28 16:11 被阅读0次

    1 消息的构成

    组成部分 说明
    Value / data payload 消息中的业务数据,必须符合 schema
    Key 用于标记消息
    Properties 用户自定义属性的可选键/值对
    Producer name 生产消息的生产者名称
    Topic name 发布消息的主题名
    Schema version 消息的 schema 版本
    Sequence ID 消息的序列 ID 最初由其生产者分配,表示消息在该序列中的顺序。如果 brokerDeduplicationEnabled 设置为true,则在 Partition 的生产者中是唯一的,
    Message ID 消息 ID 在 Pulsar 集群中是唯一的,消息被持久化后 Bookies 分配的
    Publish time 消息发布的时间戳,由生产者自动生成的。
    Event time 应用程序附加到消息的可选时间戳。如果没有设置事件时间,则值为 0

    2 四种订阅模式

    2.1 独占 Exclusive 模式

    Exclusive 模式只允许一个 Consumer,使用同一个订阅名订阅 Topic。如下图所示,只允许 Consumer A-0 消费消息。

    说明
    ① 如果多个消费者使用同一个订阅订阅一个 Topic,则会发生客户端异常
    ② Exclusive 是默认订阅类型

    image.png

    2.2 容错 Failover 模式

    Failover 模式允许多个 Consumer 添加到同一个订阅名。当主消费者断开连接时,所有未 ACK 的消息都会传递给排队的下一个 Consumer。如下图所示,Consumer-B-0 是主消费者,而如果 Consumer-B-0 断开连接, 则 Consumer-B-1 将是排队接收消息的下一个 Consumer。

    说明
    ① 如果针对 Partitioned Topic,在 Failover 的消费模式下,Broker 首先按照优先级和消费者名称的 Hash 顺序对 Consumer 进行排序,然后选择优先级最高的 Consumer。
    ② 如果针对 Non-partitioned Topic,在 Failover 的消费模式下,Broker 会根据消费者订阅的顺序进行选择。

    image.png

    2.3 共享 Shared 模式

    Shared 模式允许多个 Consumer 添加到同一个订阅名。消息在 Consumer 之间循环分发,任何给定的消息都只传递给一个 Consumer。当 Consumer 断开连接时,所有发送给它但未提交 ACK 消息将被重新安排发送给剩余的 Consumer。

    说明:Shared 模式不保证消息是顺序消费的,也不能使用累计提交 ACK

    image.png

    2.4 Key-Shared 模式

    Key-Shared 模式允许多个 Consumer 添加到同一个订阅名。消息在 Consumer 之间分发,具有相同 Key 或相同排序 Key 的消息仅传递给一个 Consumer。无论消息被重新传递多少次,它都会传递给同一个 Consumer。当 Consumer 连接或断开连接时,将导致 Consumer 更改某些消息的 Key。

    image.png

    相关文章

      网友评论

          本文标题:【Pulsar 精选】入门 Pulsar 消息机制

          本文链接:https://www.haomeiwen.com/subject/vxfbgrtx.html