一对多(唯一)的 Azure 服务总线队列与主题

Azure Service Bus Queues vs Topics for one to many(unique)

我有一个托管在 Azure 上的在线服务,可以将数据异步发送到本地客户端。 每个客户都由唯一代码标识。

实际上只有一个主题,每个客户端都有一个订阅,它对唯一代码有一个过滤器,作为消息中的参数发送。不会向所有客户端广播任何消息。

我觉得这样使用topic是不对的。 我想到的另一种方法是为每个客户使用一个专用队列,这是在第一次联系时创建的

这会是更好的方法吗?

谢谢

不建议为每个客户端创建单独的队列。这是Topics解决的问题。

如果每个客户端都有单独的队列,那么您需要从服务器向多个队列发送消息。当客户数量增加时,这将变得乏味。

拥有一个主题和多个订阅很容易管理,因为消息只会从服务器发送到一个主题。

我认为使用 Topics and Subscriptions 是正确的方法。原因如下:

目前,路由逻辑(哪条消息需要转到哪个订阅)由 Azure 服务总线根据您配置的规则处理。如果您使用队列,路由逻辑将需要进入您的托管服务。在发送每条消息之前,您需要确保队列存在。我认为这会以某种方式增加您的服务级别的复杂性。

此外,主题和订阅将使您能够构建一种审计跟踪功能(不确定您是否正在寻找这种功能)。您可以创建一个单独的订阅,该订阅具有将所有消息 (True SQL Rule) 与客户端特定订阅一起传送到该订阅的规则。