当前位置: 首页 > 知识库问答 >
问题:

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

景永望
2023-03-14

我正在使用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个答案

巫马心水
2023-03-14

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

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

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

 类似资料:
  • 我有一个应用程序,在这个应用程序中,我可以在进程的一部分中以JSON格式将消息写入Azure服务总线队列。我有一个下游进程,我想将该消息从队列中弹出,将json转换为一个对象,然后处理该对象。 我没有问题将消息推送到队列上,但我还没有找到任何将消息从队列中逐一或循环弹出的示例。我在微软或Github上看到的每一个例子都是一个控制台应用程序(在网络应用程序中毫无用处),它设置了某种侦听器,可以抓取队

  • 我想从azure服务总线(队列)读取所有消息。 我已经按照下面的指示链接https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-php-how-to-use-queues 目前它只能获取一条消息。。 我想从服务总线(队列)获取所有消息。 提前谢谢。。

  • 我是Azure服务总线的新手,我应该将消息推送到队列中,然后有一个单独的计划任务,该任务将读取该队列中的所有活动消息,并将它们批量导入到sql我以前尝试过这个代码,当我调用时它正在工作它在发送消息后立即工作,但现在它在单独的计划任务中不工作。任何帮助为什么或什么我可以用来批量阅读信息或这是不可能的

  • 问题内容: 我只是在尝试找出如何最好地尽快从Azure Service Bus队列中检索消息。 我感到震惊的是,没有任何方法可以正确地订阅通知队列,而我将不得不进行轮询。(除非我错了,在这种情况下文档很糟糕)。 我的轮询工作很长,但每60秒检查一条消息似乎每月需要花费900英镑左右(再次,除非我误解了)。而且,如果我添加一个冗余/秒服务来进行轮询,它会加倍。 所以我想知道最好/最经济的方法是什么。

  • 为什么已经拥有了共享内存时需要消息队列呢? 这将是多种原因,让我们将其分解为多个点来简化 - 据了解,一旦消息被一个进程接收到,它将不再可用于任何其他进程。 而在共享内存中,数据可供多个进程访问。 如果想使用小信息格式进行通信。 当多个进程同时进行通信时,共享内存数据需要同步保护。 使用共享内存的写入和读取频率很高,那么实现功能将会非常复杂。 在这种情况下不值得使用。 如果所有的进程不需要访问共享

  • 一、消息模型 点对点 发布/订阅 二、使用场景 异步处理 流量削锋 应用解耦 三、可靠性 发送端的可靠性 接收端的可靠性 参考资料 一、消息模型 点对点 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 发布与订阅模式和观察者模式有以下不同: 观察者模式中,观察者和主题都知道对方的存在;