如何从服务总线队列中获取QueueDetails?

时间:2020-03-19 14:35:28

标签: javascript azure azureservicebus azure-sdk

我正在使用azure-sdk-js来读取消息并将消息发送到Azure Service Bus队列。

我已经成功地设法连接到队列,读取消息,读取DLQ和发送消息。我想扩展它以显示有关每个队列中存在多少消息,正在处理多少消息以及有多少个DL的信息。我发现QueueDetails拥有此信息。但是我不明白如何获得那些QueueDetailsQueueDetailsQueueResponse实现,所以基本上我正在寻找一种GetQueue(queueName)的方法,但是我似乎找不到它。

任何人以前都实现过这样的事情,并且知道我需要使用哪种方法吗?

4 个答案:

答案 0 :(得分:3)

1.1.3版的QueueDetails包中偶然暴露了一些接口@azure/service-bus。使用这些接口的ATOM管理客户端仍在工作中,因此不属于导出的面向公众的API界面的一部分。我们有一个可行的实现方案,但最终的设计仍在讨论中,API可能会更改。

关注https://github.com/Azure/azure-sdk-for-js/issues/7991https://github.com/Azure/azure-sdk-for-js/issues/7938,以获取更多信息。

现在,请使用@azure/arm-servicebus程序包来获取队列中的详细信息。如果您希望通过使用连接字符串来实现这些功能,则推荐使用azure-sb,直到@azure/service-bus在不久的将来提供类似的功能为止。

自2020年6月8日起更新:

大家好,

我们很高兴与您分享@azure/service-bus软件包的v7的第三个预览版(7.0.0-preview.3)现在支持通过单独的“客户端”,可以通过连接字符串或AAD凭据实例化。

请签出sample for management operations以获得更多详细信息。

请注意,该预览仍处于预览状态,下一个预览可能会根据内部和外部反馈对API进行一些更改。

请尝试一下,将问题记录在https://github.com/Azure/azure-sdk-for-js

上,让我们知道您是否有任何反馈

答案 1 :(得分:2)

因此,@azure/service-bus软件包本质上提供了与Azure Service Bus的基于AMQP的连接,并且仅具有主要用于处理消息的方法。该软件包已删除了管理实体(队列,主题和订阅)的功能。

您基本上有三个选择:

  1. 使用@azure/arm-servicebus包:Azure Service Bus团队将管理实体的功能从数据平面移到了控制平面。因此,您必须使用此程序包来获取有关队列的详细信息。您要调用的方法是get
  2. 使用azure-sb软件包:这确实是一个旧软件包,是REST API的包装。您可以在这里找到有关此软件包的更多详细信息:https://github.com/Azure/azure-sdk-for-node/tree/master/lib/services/serviceBus
  3. 直接使用REST API:如另一个答案中所述,您可以直接使用REST API获取有关队列的详细信息。

答案 2 :(得分:1)

您可以使用REST Api和GET操作:

https://docs.microsoft.com/en-us/rest/api/servicebus/queues/get

您要查找的信息在“邮件计数详细信息”内:

https://docs.microsoft.com/en-us/rest/api/servicebus/queues/get#messagecountdetails

答案 3 :(得分:1)

我检查sdk,有一个serviceBusAtomManagementClient,它具有getQueueDetails方法,在sdk中,它使用GetQueueResponse扩展了QueueDetails,您可以参考在这里。

在github中有一个有关atomManagement的示例,更多详细信息请参见atomManagementApi