Azure Functions 總覽的 Azure 佇列儲存體觸發程式和系結

Azure Functions 可以在建立新的 Azure 佇列儲存體訊息時執行,而且可以在函式內寫入佇列訊息。

動作 類型
以佇列儲存體資料變更的形式執行函式 觸發程序
寫入佇列儲存體訊息 輸出系結

新增至您的函數應用程式

Functions 2.x 和更新版本

使用觸發程式和系結會要求您參考適當的封裝。 NuGet 套件適用于 .net 類別庫,而延伸模組套件組合適用于所有其他應用程式類型。

語言 加入者 .。。 備註
C# 安裝NuGet 套件3.x 版
C # 腳本、JAVA、JavaScript、Python、PowerShell 註冊延伸模組套件組合 建議搭配使用Azure Tools 擴充功能與 Visual Studio Code。
C # 腳本 (online-僅適用于 Azure 入口網站) 新增系結 若要更新現有的系結延伸模組,而不需要重新發佈函數應用程式,請參閱 更新您的延伸模組。

儲存體擴充功能5.x 和更新版本

現在已可使用新版本的儲存體系結延伸模組。 它引進了使用身分 識別(而非秘密)連接的能力。 如需使用受控識別來設定函式應用程式的教學課程,請參閱 使用以身分識別為基礎的連接建立函數應用程式教學課程。 針對 .NET 應用程式,新的延伸模組版本也會變更您可以系結的類型,並以 WindowsAzure.StorageMicrosoft.Azure.Storage Azure 中較新的類型取代類型WindowsAzure.Storage

您可以藉由安裝NuGet 套件5.x 版來取得此擴充功能版本,或在您的檔案中新增下列內容,以從擴充功能套件組合 v3 新增

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[3.3.0, 4.0.0)"
  }
}

注意

版本5.x 的儲存體延伸模組 NuGet 封裝和 3.x版的延伸模組套件目前並未包含資料表儲存體系結。 如果您的應用程式需要表格儲存體,您將必須繼續使用延伸模組套件的版本 4.x NuGet 套件或 2.x

若要深入瞭解,請參閱 更新您的延伸模組。

Functions 1.x

函數1.x 應用程式會自動參考 NuGet 套件 2.x版的 node.js

Functions 1.x 中的 Azure Storage SDK 版本

在 Functions 1.x 中,儲存體觸發程序和繫結會使用 Azure 儲存體 SDK 7.2.1 版 (WindowsAzure.Storage NuGet 套件)。 如果參考不同版本的儲存體 SDK,且繫結至函式簽章中的儲存體 SDK 類型,則 Functions 執行階段可能會報告它無法繫結至該類型。 解決方案是確定您的專案參考 WindowsAzure.Storage 7.2.1

host.json 設定

本節說明2.x 版和更高版本中此系結的可用設定。 主機. json 檔案中的設定會套用至函式應用程式實例中的所有函數。 下列範例主機 json 檔案僅包含此系結的2.x 版 + 設定。 如需2.x 版和更新版本中函數應用程式設定的詳細資訊,請參閱 Azure Functions 的 host json 參考

注意

有關 Functions 1.x 中 host.json 的參考,請參閱適用於 Azure Functions 1.x 的 host.json 參考

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
屬性 預設 描述
maxPollingInterval 00:01:00 佇列輪詢之間的間隔上限。 最小間隔為00:00: 00.100 (100 ms) 。 間隔遞增至 maxPollingInterval 。 的預設值 maxPollingInterval 為 00:01:00 (1 分鐘) 。 maxPollingInterval 不得小於00:00: 00.100 (100 ms) 。 在函數2.x 和更新版本中,資料類型為 TimeSpan 。 在函數1.x 中,它是以毫秒為單位。
visibilityTimeout 00:00:00 處理訊息失敗時,重試之間的時間間隔。
batchSize 16 Functions 執行階段會同時擷取,並以平行方式處理的佇列訊息數目。 當要處理的數目減少到 newBatchThreshold 時,執行階段就會取得另一個批次,並開始處理那些訊息。 因此,每個函式並行處理之訊息的上限為 batchSize 加上 newBatchThreshold。 這項限制個別套用至每個佇列觸發的函式。

如果您需要避免平行執行在單一佇列上收到的訊息,可以將 batchSize 設定為 1。 不過,只要您的函式應用程式只在 (VM) 的單一虛擬機器上執行,此設定就會排除平行存取。 如果函式應用程式相應放大為多個 VM,則每個 VM 可以執行每個佇列觸發之函式的一個執行個體。

最大值 batchSize 為 32。
maxDequeueCount 5 將訊息移至有害佇列之前,嘗試處理訊息的次數。
newBatchThreshold N * batchSize/2 每當要同時處理的訊息數目下降至這個數字時,執行階段就會擷取另一個批次。

N表示在 App Service 或進階版方案上執行時可用的個 vcpu 數目。 其值 1 適用于耗用量方案。
messageEncoding base64 這項設定僅適用于 延伸版本5.0.0 和更新版本。 它代表訊息的編碼格式。 有效值為 base64none

下一步