簡體   English   中英

Azure function 服務總線觸發並發

[英]Azure function Service Bus Trigger concurrency

我正在開發 Azure Function,它在 Dynamics 365 CRM 中執行多個操作。 我不完全理解 Azure 函數並發是如何工作的。 我有一個消費計划,我的 Azure Function 里面有一個 function 由服務總線消息觸發。

當我第一次測試它時,服務總線收到大約 200 條消息,應用程序開始同時處理大量消息,向無法處理它們的 dynamics 365 發出大量請求。 因此,在 Azure 門戶中,我設法將最大實例數設置為 1,但 function 仍然一次處理許多消息。 對此設置限制的最佳方法是什么? 在 host.json 中使用 maxConcurrentCalls? 在 host.json 中使用 maxConcurrentSessions? 在應用配置中使用 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT?

此外,將 maxConcurrentCalls 設置為 10 和 1 個 function 實例或將其設置為 5 和 2 個 function 實例有什么區別?

maxConcurrentCalls是在host.json中為 Azure 函數服務總線觸發器配置的屬性。

默認情況下,Functions 的運行時並發處理多條消息(默認值 - 16)。 maxConcurrentCalls設置為 1 以設置運行時一次僅處理單個隊列或主題消息。

此外, maxConcurrentCalls是最大數量。 對每個縮放實例應啟動的回調的並發調用數。


maxConcurrentSessions - 每個擴展實例同時處理的最大會話數。

此設置僅適用於一次接收一條消息的函數。

對於每個實例一次只需要處理一條消息的要求,您可以在host.json中使用上述配置。

如果你的需求是Singleton 支持Functions 保證一次只有一個 function 運行,那么你需要配置這個


WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT

此設置沒有默認限制,它表示最大數量。 應用程序可以擴展到的實例數。

  1. 不要橫向擴展 function 並且只在一個實例中運行,將WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT設置為 1
  2. 除此設置外,您還需要將maxConcurrentCalls設置為 1。

很少有參考資料以獲取更多信息:

  1. Azure Function 一次只處理一條消息
  2. Azure 函數 - WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT和 batchSize - 如何獲得所需的並發性
  3. azure 服務maxConcurrentCalls完全被忽略
  4. host.json設置官方文檔Azure Function Service Bus Trigger對maxConcurrentCalls , maxConcurrentSessions的解釋
  5. 官方文檔解釋了WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT

暫無
暫無

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

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