【问题标题】:what is the difference between azure-sb and @azure/service-bus?azure-sb 和 @azure/service-bus 有什么区别?
【发布时间】:2019-08-08 13:52:29
【问题描述】:
我想创建一个 nodejs Azure 服务总线客户端来读取主题,并且我希望我的客户端自动注册其订阅。
所以@azure/service-bus 允许正常使用 SB,但不允许创建订阅。 azure-sb 确实允许创建一个并在总线上运行。
我需要在我的 nodejs 应用程序中同时安装这两者吗?两者似乎都是微软的官方软件包,但是,我想知道两者的预期用途和预期的未来是什么(一个会取代另一个吗?)
【问题讨论】:
标签:
node.js
azure
azureservicebus
azure-servicebus-topics
【解决方案1】:
简单地说,azure-sb 是用于管理 Service Bus 的旧 SDK,而 @azure/service-bus 是新 SDK。
这两个包有一些区别:
-
协议:
azure-sb 是对 Service Bus REST API(HTTP 协议)的封装,而 @azure/service-bus 使用 AMQP 协议与 Service Bus 通信。
-
功能:
azure-sb 允许您通过允许实体(队列、主题和订阅)对其执行 CRUD 操作来使用它们。这些功能已从@azure/service-bus 中删除,因为 Microsoft 通过对这些操作强制执行 RBAC 将这些 CRUD 操作移至控制平面下。要执行这些操作,您需要使用@azure/arm-servicebus。 @azure/service-bus 包更适合发送和接收消息。如果您需要,它还支持Websockets。
我需要在我的 nodejs 应用程序中同时安装这两者吗?两者似乎都是官方包
来自微软,但是,我想知道两者的预期用途是什么
和预期的未来(一个会取代另一个吗?)
考虑到您的要求,我的回答是肯定的。您将需要这两个软件包。我不确定这是否会导致任何问题。在我们的项目中,我们最终直接实现了 REST API(而不是使用 azure-sb 包)对实体进行 CRUD 操作,并使用 @azure/service-bus 处理消息。
关于@azure/service-bus 最终将取代azure-sb 包,我纯粹是在猜测,但我认为这不会很快发生。为此,Service Bus 团队必须首先删除 REST API,这似乎不太可能,但 Microsoft 正在实体级别努力推动 RBAC,因此如果您刚开始使用,我建议您使用 @azure/arm-servicebus 和 @azure/service-bus。