繁体   English   中英

使用Azure功能处理Azure Service Bus队列消息

[英]Handling Azure Service Bus Queue messages with Azure function

因此,我们可以减轻应用程序中的某些处理负担,以提供更好的用户体验,同时仍能完成这些繁重的任务,并找到了通往Azure Service Bus队列的方式。

我了解如何将数据推送到队列以及消息队列背后的基本概念,但我努力了解的是如何在它们进入时对其进行处理。仅考虑一下,听起来应该有某种方法可以实现和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();

但是在这种情况下,我们只是在模拟轮询对吗? 这只是一个不好的解决方案。 我在考虑设计中的错误吗?

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

通过ServiceBus API,可以使用OnMessage方法来设置消息泵,但是如果使用的是Azure Functions,则可以通过使用Service Bus触发器来完成所有操作。

您只需将Azure Function配置为指向您要侦听的队列。 将新消息添加到队列后,将触发您的函数,并将消息传递到队列中。

看一下Service Bus触发器示例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM