簡體   English   中英

Azure Functions host.json隊列batchSize小於newBatchThreshold

[英]Azure Functions host.json Queue batchSize less than newBatchThreshold

我有一個Azure函數,該函數調用VM上托管的Web服務。 由於這種依賴性,重要的是,並發運行的Azure Function實例不得超過8個實例(VM僅具有8個核心,每次對Web服務的調用都使用單個核心)。 如果派生了8個以上的實例,則Web服務調用將開始備份,觸發Azure功能的隊列中的項目將開始超時,並且消息將被丟棄。 但是,我也想盡可能地利用可用資源來最大化隊列的處理,因此我希望只要隊列中有8個或更多項目,就總是有8個Azure函數實例正在運行。

為了完成所需的限制,我將Azure Function計划設置為在App Service計划而非消費計划上運行,並且在host.json中為Azure Function服務設置了以下值:

{
    "queues": {
        "batchSize": 1,
        "newBatchThreshold": 7
    }
}

從理論上講,這使得只要運行7個或更少的函數實例,就會使另外1條消息出隊,直到有8條消息正在處理。 我現在有這樣的運行,它似乎是工作,但我不能在任何地方找到host.json文檔或WebJobs SDK文檔 ,指出它是否是正常的batchSize小於newBatchThreshold 我只知道,該建議是newBatchThreshold是一半的batchSize (這顯然不是我在做什么)。

我的問題是:這種配置可以嗎? 還是有更好的方法來實現我的節流目標?

是的,那完全可以。 每個標志都具有精確的(盡管有點混亂)語義,並且任何組合都是有效的,並且將遵循記錄的語義。

請注意,使用Consumption Azure Functions時,最終可能會縮放到多個實例,每個實例都有這些限制。 如果要避免這種情況,請嘗試將https://github.com/Azure/azure-webjobs-sdk-script/wiki/Configuration-Settings的 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT設置為1。

暫無
暫無

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

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