0

在我的Azure的隊列觸發webjobs我要麼根本就不設置BATCHSIZE(默認爲16),或者我設置:如何查看Azure隊列觸發的webjobs中一批消息中的項目數量?

JobHostConfiguration.Queues.BatchSize = ...;

據傳(按F5頻繁)好像不管什麼設置是隊列中的項數總是減少1.我想看看實際上發生了什麼 - 我怎麼看到在任何給定時刻抓取的消息的數量。該值似乎不是隊列觸發器元數據的一部分。

回答

0

據我所知,BatchSize是並行拾取並行執行的隊列消息的最大數量(默認值是16)。

在我看來,這意味着azure webjobs將一次執行16個線程來執行該功能。

如果您想查看在任何給定時刻抓取的郵件數量。

我建議你可以在本地開發環境中編寫測試演示。

我建議你可以試試下面的功能。

public static void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log) 
     { 
      Console.WriteLine("start to execute queue : " + message); 
      //log.WriteLine(message); 
      Thread.Sleep(10000); 
      Console.WriteLine("End to execute queue : " + message); 
     } 

代碼中的「Thread.Sleep(10000)」會使線程休眠10秒。

然後,您可以先在隊列中添加20條消息並運行webjobs。

你會發現結果是象下面這樣:

它會先執行16線程來執行功能: enter image description here

+0

這是個好主意。如果我看到該消息一次只能被抓取一次,那麼您會如何解決該問題? – Howiecamp

+0

據我所知,如果你在你的webjob中設置斷點,它將停止所有線程等待你countinue運行代碼。 因此,無論多頻繁點擊F5,它只會運行一個線程來獲取一個隊列消息。另外,如果您將您的webjobs發佈到azure,則可以設置它的'AzureWebJobsDashboard'連接字符串,如果您設置了此連接字符串,則azure webjobs將會自動記錄有關webjobs如何運行的詳細信息。我可以使用「log.WriteLine」來記錄我的帖子顯示的信息。通過閱讀這些日誌,您可以排除錯誤。 –

相關問題