c# - Azure 存储队列 - 计算可见消息

标签 c# azure azure-storage-queues

我有一个分布式应用程序,它与 Azure 存储队列共享负载。为了验证一切是否正常工作,我编写了一个小应用程序,每 10 分钟运行一次并检查队列中有多少项目。如果数量高于阈值,请向我发送通知消息。

这就是我运行所有队列的方式:

Dictionary<string, int> dic = new Dictionary<string, int>();
foreach (CloudQueue queue in QueuesToMonitor)
{
    queue.FetchAttributes();
    dic.Add(queue.Name, queue.ApproximateMessageCount.HasValue ? queue.ApproximateMessageCount.Value : -1);
}

这段代码工作正常,但它也计算隐藏的消息。我想从计数中排除这些消息(因为这些任务尚未准备好执行)。

例如,我检查了我的一个队列,得到的答案是队列中有 579 个项目。但是,实际上没有可见的元素。我使用 Azure 存储资源管理器验证这一点: 0 of 579

如何只计算队列中可见的项目?

最佳答案

对您问题的简短回答是,您无法获取队列中仅可见消息的计数。

近似消息计数将为您提供队列中消息总数的近似计数,并且包括可见消息和不可见消息。

您可以做的一件事是PEEK at messages,它会返回给您可见消息的列表。但是,它最多只会返回队列中前 32 条消息。因此,如果阈值小于 32,则发送通知消息的逻辑将起作用。

关于c# - Azure 存储队列 - 计算可见消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926896/

相关文章:

c# - 如何在转换为PDF时保持word文档的字体属性

c# - C# 中的异常传播

azure - 如何跟踪失败/过期的 azure 事件网格传递消息?

SharePointOnlineCredentials 引发 ComException

asp.net - 将 ASP.NET Core 1.1 发布到基于 Linux 的应用服务

c# - 如何在 C# 中将所有消息存储在 Azure 存储队列上而不出列

c# - ToUpper() 有时会改变字符 (µ -> M)

每个键有两个值的 C# 字典?

azure - 使用 Azure Webjobs 和队列存储在给定时间执行

Azure函数: How do you use a POCO in a binding expression with Azure Storage Queue?