azure-sb 和@azure/service-bus 有什么区别?

what is the difference between azure-sb and @azure/service-bus?

我想创建一个 nodejs Azure 服务总线客户端来读取主题,我希望我的客户端自动注册其订阅。

所以@azure/service-bus允许正常使用SB,但不允许创建订阅。 azure-sb 确实允许创建一个并在总线上运行。

我需要在我的 nodejs 应用程序中同时安装它们吗?两者似乎都是微软的官方软件包,但是,我想知道两者的预期用途和预期的未来是什么(一个会取代另一个吗?)

简单来说,azure-sb 是用于管理服务总线的旧 SDK,而 @azure/service-bus 是新的。

这两个包有一些不同:

  • 协议azure-sb 是服务总线 REST API(HTTP 协议)的包装器,而 @azure/service-bus 使用AMQP 协议与服务总线通信。
  • 功能azure-sb 使您能够通过允许实体(队列、主题和订阅)对其执行 CRUD 操作来使用它们。这些功能已从 @azure/service-bus 中删除,因为 Microsoft 通过在这些操作上强制执行 RBAC 将这些 CRUD 操作移至控制平面下。要执行这些操作,您将需要使用 @azure/arm-servicebus@azure/service-bus 包更适合发送和接收消息。如果您需要,它还支持 Websockets

Do I need to install both in my nodejs app? Both seem official package from Microsoft, however, I wonder what is the intended usage for both and intended future (will one replace the other?)

考虑到您的要求,我的回答是肯定的。您将需要这两个包。我不确定这是否会导致任何问题。在我们的项目中,我们最终直接实现了 REST API(而不是使用 azure-sb 包)对实体进行 CRUD 操作,并使用 @azure/service-bus 处理消息。

关于 @azure/service-bus 最终会取代 azure-sb 包,我纯粹是猜测,但我认为这不会很快发生。为此,服务总线团队将不得不首先删除 REST API,这似乎不太可能,但微软正在实体级别大力推动 RBAC,因此我建议您使用 @azure/arm-servicebus@azure/service-bus 如果你是新手。