使用Azure Service Bus的队列和主题/订阅的消息排序传递

时间:2019-03-31 20:42:00

标签: azure azureservicebus azure-servicebus-queues azure-servicebus-topics azure-servicebus-subscriptions

对于队列和主题默认情况下是否支持消息排序传递感到困惑。

它说,下面队列支持FIFO消息传递。我认为这与邮件订购传递相同。

  

队列向一个或多个竞争消费者提供先进先出(FIFO)消息传递。   https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-queues-topics-subscriptions

但是,为什么需要启用会话,如下面的屏幕截图所示。

  

要在服务总线中实现FIFO保证,请使用会话。

https://docs.microsoft.com/en-us/azure/service-bus-messaging/message-sessions

enter image description here

主题和订阅

主题和订阅的FIFO怎么样?

更新

我的问题是:

在不使用Sessons的情况下,默认情况下,队列和主题/订阅是否支持消息排序传递(FIFO)?如果我没记错的话,像RabbitMQ这样的其他经纪人默认情况下也支持此功能。

我是否更正,如果我想要队列中所有消息的FIFO,甚至认为我不需要有序消息会话,是否需要启用会话?

例如:

队列中所有消息的排序:我需要保留所有消息的排序而不启用会话:

1, 2, 3, 4, ... n

有序消息会话:我不想启用会话

session 1: 1, 2, 3, n

session 2: 1, 2, 3, n

session n: 1, 2, 3, n

启用会话仅是为了保留消息排序功能,即使我不希望出现会话时也是如此吗?

1 个答案:

答案 0 :(得分:1)

可以在支持接收的实体上启用会话。那就是队列和订阅。主题只能用于发送。

已更新

  

我需要保留所有消息顺序而不启用会话

这将不起作用。有序消息需要会话以确保强制执行命令。没有会话,消息很容易混乱。