閱讀英文

共用方式為


Azure Functions 的 Azure 服務匯流排 系結

選擇程式設計語言

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

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

安裝擴充功能

您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:

本節說明如何使用 類別庫。 針對 C# 文稿,您必須改為 安裝延伸模組套件組合 2.x 版或更新版本。

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

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

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

此版本引進了使用身分識別而非秘密進行連線的能力。 如需使用受控識別設定函數應用程式的教學課程,請參閱使用身分識別型連線建立函數應用程式的教學課程

此版本可讓您系結至來自 Azure.Messaging.ServiceBus 的類型。

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

安裝搭售方案

服務匯流排 系結是延伸模組套件組合的一部分,其指定於您的host.json項目檔中。 您可能需要修改此套件組合來變更系結的版本,或尚未安裝套件組合。 若要深入瞭解,請參閱 延伸模組套件組合

此版本引進了使用身分識別而非秘密進行連線的能力。 如需使用受控識別設定函數應用程式的教學課程,請參閱使用身分識別型連線建立函數應用程式的教學課程

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

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

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

繫結型別

針對 .NET 所支援的繫結類型同時取決於延伸模組版本和 C# 執行模式,這可以是下列其中一項:

內含式類別庫為經過編譯的 C# 函式,其在與 Azure Functions 執行階段相同的程序中執行。

選擇版本以查看模式和版本的系結類型詳細數據。

服務匯流排 延伸模組根據下表支持參數類型。

系結案例 參數型別
服務匯流排 觸發程式 (單一訊息) ServiceBusReceivedMessage
string
byte[]
JSON 可串行化類型1
服務匯流排 觸發程式 (訊息批次) ServiceBusReceivedMessage[]
string[]
服務匯流排 觸發進階案例2 ServiceBusClient
ServiceBusMessageActions
ServiceBusSessionMessageActions
ServiceBusReceiveActions
服務匯流排 輸出 (單一訊息) ServiceBusMessage
string
byte[]
JSON 可串行化類型1
服務匯流排 輸出 (多個訊息) ICollector<T>IAsyncCollector<T> 其中 T 是單一訊息類型之一
ServiceBusSender

1 包含 JSON 資料的訊息可以還原串行化為已知的純舊 CLR 物件 (POCO) 類型。

2 進階案例包括訊息結算、會話和交易。 除了一般觸發程序參數之外,這些類型也可作為個別參數使用。

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,
            "minMessageBatchSize": 1,
            "maxBatchWaitTime": "00:00:30",
            "sessionIdleTimeout": "00:01:00",
            "enableCrossEntityTransactions": false
        }
    }
}

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

屬性 預設 描述
mode Exponential 用於計算重試延遲的方法。 默認指數模式會根據退後策略重試嘗試,每次嘗試都會在重試前增加等候持續時間。 模式 Fixed 會以固定間隔重試嘗試,每個延遲都有一致的持續時間。
tryTimeout 00:01:00 每次嘗試等候作業的最大持續時間。
delay 00:00:00.80 重試嘗試之間要套用的延遲或退退因素。
最大延遲 00:01:00 重試嘗試之間允許的最大延遲
maxRetries 3 在考慮相關聯的作業失敗之前,重試嘗試的次數上限。
prefetchCount 0 取得或設定訊息接收者可以同時要求的訊息數目。
transportType amqpTcp 用於與 服務匯流排 通訊的通訊協定和傳輸。 可用選項: amqpTcpamqpWebSockets
webProxy n/a 用來透過 Web 套接字與 服務匯流排 通訊的 Proxy。 Proxy 無法與傳輸搭配 amqpTcp 使用。
autoCompleteMessages true 判斷是否要在函式成功執行之後自動完成訊息。
maxAutoLockRenewalDuration 00:05:00 將自動更新訊息鎖定的最大持續時間。 此設定僅適用於一次接收單一訊息的函式。
maxConcurrentCalls 16 回呼的並行呼叫數目上限,應該針對每個縮放實例起始。 Functions 執行階段預設會並行處理多個訊息。 只有當觸發程式上的屬性或屬性設定為 falseisSessionsEnabled,才會使用此設定。 此設定僅適用於一次接收單一訊息的函式。
maxConcurrentSessions 8 每個縮放實例可同時處理的會話數目上限。 只有當觸發程式上的屬性或屬性設定為 trueisSessionsEnabled,才會使用此設定。 此設定僅適用於一次接收單一訊息的函式。
maxMessageBatchSize 1000 將傳遞至每個函式呼叫的訊息數目上限。 此設定僅適用於接收一批訊息的函式。
minMessageBatchSize1 1 批次中所需的訊息數目下限。 只有在函式接收多個訊息且必須小於 maxMessageBatchSize時,才會套用最小值。
不嚴格保證大小下限。 部分批次會在完成之前無法準備完整批次時 maxBatchWaitTime 分派。
maxBatchWaitTime1 00:00:30 觸發程式在叫用函式之前應該等候填滿批次的最大間隔。 只有在大於 1 且忽略時,才會考慮 minMessageBatchSize 等候時間。 如果等候時間經過前可用的訊息少於 minMessageBatchSize ,則會使用部分批次來叫用函式。 最長允許的等候時間是實體訊息鎖定持續時間的 50%,這表示允許的上限為 2 分 30 秒。 否則,您可能會收到鎖定例外狀況。

注意: 此間隔不是叫用函式確切計時的嚴格保證。 由於定時器精確度,誤差幅度很小。
sessionIdleTimeout n/a 等候目前使用中會話接收訊息的時間上限。 經過此時間之後,會話將會關閉,且函式會嘗試處理另一個會話。
enableCrossEntityTransactions false 是否要啟用跨越 服務匯流排 命名空間上多個實體的交易。

1 使用 minMessageBatchSizemaxBatchWaitTime 需要 5.10.0 版的 Microsoft.Azure.WebJobs.Extensions.ServiceBus 套件或更新版本。

下一步