因此,我们希望在我们的应用程序中卸载一些处理以提供更好的用户体验,同时仍然完成这些繁重的任务并找到了我们的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 回答
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