【问题标题】:Azure Service Bus Queues vs Topics for one to many(unique)一对多的 Azure 服务总线队列与主题(唯一)
【发布时间】:2019-02-20 19:51:07
【问题描述】:

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

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

我觉得这样使用主题是错误的。 我想到的另一种选择是为每个客户使用一个专用队列,这是在第一次联系时创建的

这会是更好的方法吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    在我看来,使用Topics and Subscriptions 是正确的方法。原因如下:

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

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

    【讨论】:

    • 只有一个主题有许多过滤订阅(就像现在一样),是否意味着所有消息都传递给所有客户端,然后在客户端级别过滤掉?这似乎有很多不必要的流量和潜在的安全问题,因为客户端不应该看到其他人的消息。或者你是说消息是物理发送的,只发送给符合规则的订阅?如果是这样,我同意主题/订阅是要走的路。
    • 没错。如果规则匹配,一条消息将被发送到订阅。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-11
      • 2020-10-08
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 2012-04-12
      相关资源
      最近更新 更多