Azure Functions 會透過觸發程式和系結與 Azure 服務匯流排 整合。 與 服務匯流排整合可讓您建置回應佇列或主題訊息的函式。
動作 | 類型 |
---|---|
建立 服務匯流排 佇列或主題訊息時執行函式 | 觸發程序 |
傳送 Azure 服務匯流排 訊息 | 輸出繫結 |
安裝擴充功能
您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:
函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。
將延伸模組新增至安裝此 NuGet 套件的專案。
擴充功能的功能會根據擴充功能版本而有所不同:
此版本引進了使用身分識別而非秘密進行連線的能力。 如需使用受控識別設定函數應用程式的教學課程,請參閱使用身分識別型連線建立函數應用程式的教學課程。
此版本可讓您系結至來自 Azure.Messaging.ServiceBus 的類型。
此版本支援透過 .NET Aspire 整合來設定觸發程式和系結。
藉由安裝 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# 函式會在與執行階段隔離的處理序中執行。
選擇版本以查看模式和版本的系結類型詳細數據。
隔離的背景工作進程會根據下表支持參數類型。
服務匯流排觸發程序
當您想要讓函式處理單一訊息時,服務匯流排 觸發程式可以繫結至下列類型:
類型 | 描述 |
---|---|
string |
以字串表示的訊息。 當訊息為簡單文字時,請使用 。 |
byte[] |
訊息的位元組。 |
JSON 可序列化型別 | 當事件包含 JSON 數據時,Functions 會嘗試將 JSON 數據還原串行化為一般舊的 CLR 物件 (POCO) 類型。 |
ServiceBusReceivedMessage1 | 訊息物件。 系結至 ServiceBusReceivedMessage 時,您也可以選擇性地包含 ServiceBusMessageActions1,2 類型的參數來執行訊息結算動作。 |
當您想要讓函式處理一批訊息時,服務匯流排 觸發程式可以繫結至下列類型:
類型 | 描述 |
---|---|
T[] 其中 T 是其中一種單一訊息類型 |
來自批次的事件陣列。 每個專案都代表一個事件。 系結至 ServiceBusReceivedMessage[] 時,您也可以選擇性地包含 ServiceBusMessageActions1,2 類型的參數來執行訊息結算動作。 |
1 若要使用這些類型,您必須參考 Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 或更新版本 ,以及 SDK 類型系結的常見相依性。
2 使用 ServiceBusMessageActions
時,將觸發程式屬性的 屬性AutoCompleteMessages
為 false
。 這可防止運行時間在成功函式調用之後嘗試完成訊息。
服務匯流排 輸出系結
當您想要函式寫入單一訊息時,服務匯流排 輸出系結可以繫結至下列類型:
類型 | 描述 |
---|---|
string |
以字串表示的訊息。 當訊息為簡單文字時,請使用 。 |
byte[] |
訊息的位元組。 |
JSON 可序列化型別 | 物件,表示訊息。 函式會嘗試將一般舊的CLR物件 (POCO) 類型串行化為 JSON 數據。 |
當您想要函式寫入多個訊息時,服務匯流排 輸出系結可以繫結至下列類型:
類型 | 描述 |
---|---|
T[] 其中 T 是其中一種單一訊息類型 |
包含多個訊息的陣列。 每個專案都代表一則訊息。 |
針對其他輸出案例,請直接從 Azure.Messaging.ServiceBus 建立並使用 ServiceBusClient 與其他類型。 如需使用相依性插入從 Azure SDK 建立用戶端類型的範例,請參閱 註冊 Azure 用戶端 。
SDK 系結類型
適用於 Azure 服務總線的 SDK 類型處於預覽狀態。 遵循 適用於服務總線的 Python SDK 系結範例 ,以開始使用 Python 中的服務總線 SDK 類型。
重要
使用 SDK 類型系結需要 Python v2 程式設計模型。
捆綁 | 參數型別 | 範例 |
---|---|---|
ServiceBus 觸發程式 | ServiceBusReceivedMessage | ServiceBusReceivedMessage |
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
設定僅適用於與 服務匯流排 服務的互動。 它們不會影響函式執行的重試。 如需詳細資訊,請參閱 重試。
1 使用 minMessageBatchSize
和 maxBatchWaitTime
需要 5.10.0 版的 Microsoft.Azure.WebJobs.Extensions.ServiceBus
套件或更新版本。