使用Azure功能处理Azure服务总线队列消息
问题描述:
因此,我们希望卸载应用程序中的某些处理以提供更好的用户体验,同时仍然完成那些繁重的任务,并且已经找到了Azure服务总线队列。使用Azure功能处理Azure服务总线队列消息
我明白如何将数据推送到队列和消息队列背后的基本思想,但我正在努力理解的是如何处理它们。在考虑它时,听起来应该有某种方式实现和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函数,则使用服务总线触发器完成这一切。
您只需将Azure功能配置为指向想要侦听的队列即可。当新消息添加到队列中时,您的功能被触发,并且消息被传入。
看看服务总线触发例如:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger-sample
小幅盘整 - 经纪人不邮件推送到客户端。 Azure服务总线客户端有一个消息泵在单独的线程上运行,用于轮询消息。 –
谢谢我觉得这就是我一直在寻找的东西,但找不到使用这种方法的确切方法。 – tokyo0709