提问者:小点点

C#Azure存储队列--从队列中读取消息的更有效方法


我正在使用NET Core 5.0.0开发一个API Web ASP.NET Core项目,并使用Azure.Storage.Queues12.6.0来写入和读取队列消息。

一切正常,但我想知道我阅读消息的方式是否可以,或者在速度和效率方面有更好的方法。

这是我用的密码。它只是Microsoft教程中的一段代码,放在a while()循环中。AzureQueue只是QueueClient类的一个实例。

    public async Task StartReading()
    {
        while (true)
        {
            if (await AzureQueue.ExistsAsync())
            {
                QueueProperties properties = await AzureQueue.GetPropertiesAsync();

                if (properties.ApproximateMessagesCount > 0)
                {
                    QueueMessage[] retrievedMessage = await AzureQueue.ReceiveMessagesAsync(1);
                    string theMessage = retrievedMessage[0].MessageText;
                    await AzureQueue.DeleteMessageAsync(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
                }
            }
        }
    }

老实说,我不习惯使用infinte while()循环,因为它在我看来是我无法控制和停止的。但是撇开我个人的感受不谈,这种while()是一种可以接受的方法还是我应该用别的方法呢?我只需要在消息到达队列时立即继续阅读。


共1个答案

匿名用户

您可以做的是将代码放置在Azure函数中。

然后绑定azure函数以在队列上有东西时触发。

请参阅:https://docs.microsoft.com/en-us/Azure/Azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp