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

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 消息机制)