从不同的独占订阅消费时,Pulsar 分区主题是否支持全局排序?

Does Pulsar partitioned topics support global ordering when consuming from different exclusive subscriptions?

在 Apache Pulsar 文档中我们有:

假设我们有一个生产者只生产一个分区主题和两个独占订阅(一个独占订阅保证主题中的顺序)!每次订阅会按顺序消费消息吗?

这取决于你的routing mode

如果您使用 SinglePartition 模式并且不在您的消息中提供密钥,则来自您的单一生产者的所有消息都将进入同一个分区并且是有序的。但这可能不是您想要的,因为您失去了使用分区主题的优势。

如果您使用 SinglePartition 或 RoundRobinPartition(默认)模式并在您的消息中指定一个键,所有具有相同键的消息将被放置在同一个分区中并按顺序排列。

否则,没有跨分区的排序保证。消息仅在给定分区内按顺序排列。来自文档:“分区主题实际上是作为 N 个内部主题实现的,其中 N 是分区数”。因此,对分区主题的订阅与多主题订阅相同。此 post 对多主题订阅 https://jack-vanlightly.com/blog/2019/9/4/a-look-at-multi-topic-subscriptions-with-apache-pulsar 进行了一些测试,表明您不能依赖 partitioned/multi 个主题的全局排序。

您的两个订阅是独立的,并且将接收具有上述顺序保证的所有消息。请注意,如果按键排序适用于您的用例,您可能需要使用 Key_Shared subscription