Azure Functions 的 Azure 服務匯流排繫結

Azure Functions 會透過觸發程序和繫結,與 Azure 服務匯流排整合。 與服務匯流排整合可讓您建置函式,以回應和傳送佇列或主題訊息。

動作 類型
在建立服務匯流排佇列或主題訊息時執行函式 觸發程序
傳送 Azure 服務匯流排訊息 輸出繫結

安裝擴充功能

您安裝的 NuGet 套件擴充取決於您在函數應用程式中使用的 C# 模式:

函式會在與 Azure Functions 主機相同的處理序中執行。 若要深入了解,請參閱使用 Azure Functions 開發 C# 類別庫函式

安裝此 NuGet套件,將延伸模組新增至您的專案。

擴充的功能會根據擴充版本而有所不同:

從這個版本開始可以使用身分識別而非祕密來連線。 如需使用受控識別設定函數應用程式的教學課程,請參閱使用身分識別型連線建立函數應用程式的教學課程

此版本可讓您繫結至 Azure.Messaging.ServiceBus 中的類型。

此延伸模組版本可透過安裝 NuGet 套件5.x 版或更新版本來取得。

安裝搭售方案

服務匯流排繫結是延伸模組搭售方案的一部分,由 host.json 專案檔所指定。 您可能需要修改此套件組合來變更繫結的版本,否則就是尚未安裝組合。 若要深入了解,請參閱擴充搭售方案

從這個版本開始可以使用身分識別而非祕密來連線。 如需使用受控識別設定函數應用程式的教學課程,請參閱使用身分識別型連線建立函數應用程式的教學課程

您可以在 host.json 檔案中新增或取代下列程式碼,從延伸模組搭售方案 v3 中新增此版本的延伸模組:

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

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

host.json 設定

本節描述此繫結可用的組態設定,這取決於執行階段和延伸模組版本。

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "clientRetryOptions":{
                "mode": "exponential",
                "tryTimeout": "00:01:00",
                "delay": "00:00:00.80",
                "maxDelay": "00:01:00",
                "maxRetries": 3
            },
            "prefetchCount": 0,
            "transportType": "amqpWebSockets",
            "webProxy": "https://proxyserver:8080",
            "autoCompleteMessages": true,
            "maxAutoLockRenewalDuration": "00:05:00",
            "maxConcurrentCalls": 16,
            "maxConcurrentSessions": 8,
            "maxMessageBatchSize": 1000,
            "sessionIdleTimeout": "00:01:00",
            "enableCrossEntityTransactions": false
        }
    }
}

觸發程序上的 isSessionsEnabled 屬性設定為 true 時,表示接受 sessionHandlerOptions。 將觸發程序上的 isSessionsEnabled 屬性設定為 false 時,表示接受 messageHandlerOptions

這些 clientRetryOptions 設定只適用于與服務匯流排服務的互動。 它們不會影響函式執行的重試。 如需詳細資訊,請參閱 重試

屬性 預設 描述
mode Exponential 用於計算重試延遲的方法。 預設指數模式會根據輪詢策略重試嘗試,其中每個嘗試會在重試前增加等候持續時間。 Fixed 模式會以固定間隔重試嘗試,而每個延遲都有一致的持續時間。
tryTimeout 00:01:00 每次嘗試等候作業的持續時間上限。
delay 00:00:00.80 要在重試嘗試之間套用的延遲或後退因素。
maxDelay 00:01:00 重試嘗試之間允許的延遲上限
maxRetries 3 在將相關聯的作業視為失敗之前重試嘗試的次數上限。
prefetchCount 0 取得或設定訊息接收者可以同時要求的訊息數目。
transportType amqpTcp 用於與服務匯流排通訊的通訊協定和傳輸。 可用選項:amqpTcpamqpWebSockets
webProxy n/a 用於透過 Web 通訊端與服務匯流排通訊的 Proxy。 Proxy 無法與 amqpTcp 傳輸搭配使用。
autoCompleteMessages true 判斷是否要在成功執行函式之後自動完成訊息,而且是否應該用來取代 autoComplete 組態設定。
maxAutoLockRenewalDuration 00:05:00 將自動更新訊息鎖定的最大持續時間。 此設定僅適用於一次接收單一訊息的函式。
maxConcurrentCalls 16 每個所調整執行個體應該起始的回呼,其並行呼叫的數目上限。 Functions 執行階段預設會並行處理多個訊息。 此設定僅適用於一次接收單一訊息的函式。
maxConcurrentSessions 8 每個所調整執行個體可以同時處理的工作階段數目上限。 此設定僅適用於一次接收單一訊息的函式。
maxMessageBatchSize 1000 將傳遞至每個函式呼叫的訊息數目上限。 此設定僅適用於批次接收訊息的函式。
sessionIdleTimeout n/a 等候目前作用中工作階段接收訊息的時間量上限。 在經過此時間之後,處理器將會關閉工作階段,並嘗試處理另一個工作階段。 此設定僅適用於一次接收單一訊息的函式。
enableCrossEntityTransactions false 是否要啟用跨越服務匯流排命名空間上多個實體的交易。

後續步驟