根据条件检索CloudQueue中的消息数

我正在使用Azure存储模拟器。我有一个CloudQueue和一些消息。 例如,我想检索出队数大于3的邮件数。

我可以对所有消息进行循环处理,并在消息的出队计数> 3时增加计数器的数量,但是我想找到一种优化的替代方法。

获取队列后如何应用过滤器?

CloudStorageaccount storageaccount = CloudStorageaccount.Parse(Configurationmanager.AppSettings["StorageConnection"];
CloudQueueclient queueclient = storageaccount.CreatecloudQueueclient();
CloudQueue queue = queueclient.GetQueueReference("testQueue");
queue.CreateIfNotExists();

queue.FetchAttributes();
agercaigao 回答:根据条件检索CloudQueue中的消息数

我可以对所有消息进行循环,并在出现以下情况时增加一个计数器 邮件的出队计数> 3,但我想找到一个优化的 替代。

AFAIK,这是唯一的方法,因为Azure存储队列不提供任何基于消息属性的服务器端筛选机制。您将需要获取消息并仅在客户端上应用过滤。

以下是示例代码,它从队列中窥视了前32条消息并检查了消息的DequeueCount属性:

        var account = new CloudStorageAccount(new StorageCredentials(accountName,accountKey),true);
        var queueClient = account.CreateCloudQueueClient();
        var queue = queueClient.GetQueueReference("myqueue");
        queue.CreateIfNotExists();
        var messages = queue.PeekMessages(32).ToList();
        for (var i=0; i<messages.Count; i++)
        {
            var message = messages[0];
            if (message.DequeueCount > 3)
            {
                Console.WriteLine("Message has been dequeued more than 3 times. Do something!");
            }
        }
本文链接:https://www.f2er.com/2390434.html

大家都在问