簡體   English   中英

收聽隊列(事件驅動無輪詢)服務總線/存儲隊列

[英]Listen to Queue (Event Driven no polling) Service-Bus / Storage Queue

我試圖找出如何監聽隊列中的事件(尤其是入隊事件)。

假設我有控制台應用程序和服務總線隊列/主題,如何連接到隊列並等待新消息?

我試圖在沒有While(true)和常量輪詢的情況下實現這一點,我試圖以一種非常傾聽的方式做更多事情,就像一個保持連接到隊列的套接字。

我不想使用輪詢的原因是我明白它會使服務器充滿請求,我需要一個可以在很大負載下運行的解決方案。

謝謝。

我給出了問題簡單性的基本示例,但我的實際情況有點復雜:

我的Web-API使用Service Bus Queue將需要處理的消息發送到Worker角色。

我需要以某種方式知道工作人員何時處理了消息。 我希望Worker向隊列發送消息,警告Web API已處理消息,但現在我需要讓Web-API“坐下”並等待Worker的響應,這引出了我的問題:

如何在沒有輪詢的情況下持續監聽隊列(因為有很多實例會匯集,並且會產生很多可能最好避免的請求。

使用Azure WebJobs SDK - 它具有使用簡單代碼監視隊列和blob的觸發器:

public static void Main()
{
    JobHost host = new JobHost();
    host.RunAndBlock();
}

public static void ProcessQueueMessage([QueueTrigger("webjobsqueue")] string inputText, 
    [Blob("containername/blobname")]TextWriter writer)
{
    writer.WriteLine(inputText);
}

什么是Azure WebJobs SDK有一個很棒的教程。

我最終使用了QueueClient.ReceiveAsync為了等待帶有Timespan參數的消息。

            BrokeredMessage msg = subClient.ReceiveAsync(TimeSpan.FromMinutes(3));

這是一篇很好的文章,解釋了Azure Service Bus 鏈接Service Bus最佳實踐的大部分內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM