监视 azure 服务总线队列长度

Monitor azure service bus queue length

团队,

我想使用普通 C# 监视 azure 服务总线死信队列长度。当接收者不是 able/late 处理来自活动队列的消息并且由于时间延迟死信队列中的计数增加时,它应该抛出异常。

有没有不使用 ApplicationInsights 的方法?

如果您使用的是 "old" 服务总线 SDK,您可以从 MessageCountDetails:

获取它
var msg = NamespaceManager.CreateFromConnectionString(connectionString);
var queue = msg.GetQueue(queueName);
var dlqCount = queue.MessageCountDetails.DeadLetterMessageCount;

虽然使用完整框架 .NET 客户端仍然提供消息计数,但根据 Azure 服务总线团队的建议,建议的方法是使用 Azure Monitor service. The service has a .NET client that can be used to obtain the needed information (example). Service Bus team has also published a sample here。客户过去没有提供所有信息,但正在进行中,现在可能与以前不同。

如果您仍计划使用服务总线客户端来检索消息计数,我强烈建议您使用 .NET Standard 客户端而不是完整的框架客户端。 "new" 客户端没有 NamespaceManager,但它有一个等效的 ManagementClient,它将提供您正在寻找的功能,包括对其前身的改进和向前的错误修复。 "old" 客户端仅提供有限支持。

借助 Azure 门户中最新的 Azure Monitor Metrics. Or you can make use of the Azure Monitor,可以获取队列中的消息计数(活动和死信),它允许您配置仪表板和警报。