与队列相比,只有一个订阅的 Azure 服务总线主题有哪些缺点



我目前正在使用Azure 服务总线,与具有单个订阅的主题相比,我不了解队列的真正好处。我看到在这两种情况下,都可以在侦听单个队列(或订阅(时创建不同的应用程序以更快地处理消息。那么,
如果主题可以以相同的方式工作,那么使用 Azure 服务总线队列的真正便利是什么?更好的性能?便宜吗?

服务总线队列通过一个发送方和一个接收方提供消息传送。其中,服务总线主题支持多个接收器。

可以在主题下创建订阅以订阅消息。

主题下的每个订阅都充当一个队列。

消息将发送到主题,并根据订阅中配置的筛选器,消息将传递到订阅。

在您的情况下,如果您确定只有一个接收器,则可以使用队列。

如果您认为接收方的数量将来可能会增加,并且您需要先过滤消息,然后再将其提供给接收方,则可以选择主题。

考虑到性能,队列和主题之间的性能不会有太大差异。但在主题中,消息将首先通过主题,并根据过滤器的评估,消息到达订阅。在这里,主题中可能存在微小的性能不足,因为此步骤是额外的。与在队列中一样,消息将直接发送到队列。

定价是根据消息数计算的,无论是队列还是主题。不能在基本层中的命名空间下创建主题。

那么,如果主题可以以相同的方式工作,那么使用 Azure 服务总线队列的真正便利是什么?更好的性能?便宜吗?

以上都不是。性能影响微不足道,尤其是当筛选器是TrueFilter(无筛选(时。您获得的是拓扑的一些灵活性,这是普通队列无法实现的。例如,能够添加临时窃听以对消息进行故障排除。或者添加对收到的所有消息的审核。

使用队列或主题的决定取决于用例。是发布/订阅,那么您使用主题和订阅。如果需要生产者/使用者模式,其中每条消息应仅由使用者处理一次,则可以使用队列。因此,队列不仅适用于您有一个接收方,还可以有多个接收方,但一条消息只会由一个接收方获取,而不是连接到队列的所有接收方。因此,如果您的一个使用者在跟上发送到队列的消息速率方面遇到问题,您可以添加更多使用者以加快处理速度。

最新更新