2017-10-16 290 views
0

因此,我们希望卸载应用程序中的某些处理以提供更好的用户体验,同时仍然完成那些繁重的任务,并且已经找到了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(); 

但是,在这种情况下,我们只是模拟投票权?这并不是一个好的解决方案。我在设计中想到这个错误吗?

回答

2

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

使用ServiceBus API,您可以使用OnMessage方法来设置消息泵,但是如果您使用的是Azure函数,则使用服务总线触发器完成这一切。

您只需将Azure功能配置为指向想要侦听的队列即可。当新消息添加到队列中时,您的功能被触发,并且消息被传入。

看看服务总线触发例如:

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

+2

小幅盘整 - 经纪人不邮件推送到客户端。 Azure服务总线客户端有一个消息泵在单独的线程上运行,用于轮询消息。 –

+0

谢谢我觉得这就是我一直在寻找的东西,但找不到使用这种方法的确切方法。 – tokyo0709