首页 文章

使用Azure功能处理Azure Service Bus Queue消息

提问于
浏览
0

因此,我们希望在我们的应用程序中卸载一些处理以提供更好的用户体验,同时仍然完成这些繁重的任务并找到了我们的Azure Service Bus Queues .

我理解如何将数据推送到队列和消息队列背后的基本思想,但我正在努力理解的是当它们进入时如何处理它们 . 在考虑它时听起来应该有一些方法来实现和Azure每当有消息进入时都会监听的功能,但如果没有持续的轮询,我该怎么做呢?我知道您可以使用OnMessage订阅队列,但是如何使用Azure功能?

例如,目前我们正在做这样的事情,

var client = QueueClient.CreateFromConnectionString(connectionString, queueName);

BrokeredMessage message = new BrokeredMessage();

while ((message = client.Receive(new TimeSpan(hours: 0, minutes: 0, seconds: 30))) != null)
{
    Console.WriteLine(string.Format("Message received: {0}, {1}, {2}", message.SequenceNumber, message.Label, message.MessageId));
    message.Complete();

    Console.WriteLine("Processing message (sleeping...)");
    Thread.Sleep(1000);
}

Console.WriteLine("Finished listening Press ENTER to exit program");
Console.ReadLine();

但在这种情况下,我们只是模拟民意调查吗?这不是一个好的解决方案 . 我在设计中是否想到这个错误?

1 回答

  • 3

    Azure ServiceBus的工作原理是将新消息推送到已连接的客户端,而不是让客户端轮询队列 .

    使用ServiceBus API,您可以使用 OnMessage 方法设置消息泵,但如果您使用的是Azure功能,则可以使用Service Bus触发器完成此操作 .

    您只需将Azure功能配置为指向要监听的队列即可 . 将新消息添加到队列时,将触发您的函数,并将消息传递给它 .

    看一下Service Bus触发器示例:

    https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger-sample

相关问题