2017-10-16 229 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