确定Azure存储队列中是否存在消息的最有效方法

时间:2014-06-13 08:33:46

标签: azure azure-storage

我开始涉及Azure Queue(不是Service Bus)的项目。 我试图弄清楚在队列中是否有消息等待的最佳做法是什么。

AFAIK,有两种方法:

  1. 使用Queue对象的 ApproximateMessageCount 属性
  2. 调用 GetMessage ,如果返回的值为null,则没有消息。
  3. 哪一个性能更好?有什么不同吗?

    从结算POV中,我了解两者都有交易成本,这是正确的吗?

    谢谢!

2 个答案:

答案 0 :(得分:2)

GetMessage既快又便宜。从逻辑角度来看,GetMessage也更正确,因为消息计数将返回已被另一个读取器检索的消息以及已过期但未被删除的消息。

答案 1 :(得分:0)

我过去也使用过这段代码:

var cnnString = "the connection string";
var queueName = "the queue name";

var nsManager = NamespaceManager.CreateFromConnectionString(cnnString);
return nsManager.GetQueue(queueName).MessageCount;

那说 - 这是从大约4个月前开始的。

您需要执行此操作的任何原因(即,您是不是只消耗队列中的消息?)