No1*_*ver 5 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);
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但它也计算隐藏的消息.我想从计数中排除这些消息(因为那些任务还没有准备好执行).
例如,我检查了我的一个队列并得到了579个项目在队列中的答案.但是,实际上没有可见的物品.我用Azure Storage Explorer验证了这一点:

如何只计算队列中的可见项?
对您问题的简短回答是,您无法获取队列中仅可见消息的计数。
近似消息计数将为您提供队列中消息总数的近似计数,并且包括可见消息和不可见消息。
您可以做的一件事是PEEK查看消息,它会返回给您可见消息的列表。但是,它最多只会返回队列中前 32 条消息。因此,如果阈值小于 32,则发送通知消息的逻辑将起作用。
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |