跨多个主题的 Azure 服务总线 SessionId?
Azure Service Bus SessionId across multiple topics?
ASB 的 SessionId 可用于保证顺序,例如,如果我们有 5 个更新订单的消息和 3 个消费者 运行,消费者将不会为该订单处理多个消息(SessionId = OrderId ) 同时。
但假设我有 3 个主题:
- 创建订单
- 更新订单
- 删除订单
如果有 X 条消息分布在这 3 个主题上,并且都具有相同的 SessionId,那么每个主题的消费者是否会关注其他主题正在使用的 SessionId?
例如,如果一条消息正被 SessionId=5 的 CreateOrder 消费者消费,UpdateOrder 消费者是否会等待此锁释放,然后再获取它自己的一条 SessionId=5 的消息?
不同主题的会话是独立的,互不影响。也就是说,当你在topic1中收到SessionId=1的消息时,你也可以在topic2中收到SessionId=2的消息。更多细节请参考官方文档Azure Service Bus message sessions。
ASB 的 SessionId 可用于保证顺序,例如,如果我们有 5 个更新订单的消息和 3 个消费者 运行,消费者将不会为该订单处理多个消息(SessionId = OrderId ) 同时。
但假设我有 3 个主题:
- 创建订单
- 更新订单
- 删除订单
如果有 X 条消息分布在这 3 个主题上,并且都具有相同的 SessionId,那么每个主题的消费者是否会关注其他主题正在使用的 SessionId?
例如,如果一条消息正被 SessionId=5 的 CreateOrder 消费者消费,UpdateOrder 消费者是否会等待此锁释放,然后再获取它自己的一条 SessionId=5 的消息?
不同主题的会话是独立的,互不影响。也就是说,当你在topic1中收到SessionId=1的消息时,你也可以在topic2中收到SessionId=2的消息。更多细节请参考官方文档Azure Service Bus message sessions。