一对多(唯一)的Azure Service Bus队列与主题

时间:2019-02-20 11:30:09

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

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

实际上,只有一个主题,每个客户端的订阅都有一个针对唯一代码的过滤器,该订阅作为消息中的参数发送。没有消息将广播到所有客户端。

我认为以这种方式使用主题是错误的。 我想到的另一种方法是为每个客户使用专门的队列,该队列是在首次联系时创建的

这是更好的方法吗?

谢谢

2 个答案:

答案 0 :(得分:0)

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

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

具有单个主题和多个订阅很容易管理,因为消息将仅从服务器发送到单个主题。

答案 1 :(得分:0)

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

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

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