Azure Functions 的 Azure IoT 中樞繫結

這一系列文章將說明如何針對 IoT 中樞使用 Azure Functions 繫結。 IoT 中樞支援是以 Azure 事件中樞繫結為基礎。

重要事項

雖然下列程式碼範例使用事件中樞 API,但指定的語法適用於 IoT 中樞函式。

動作 類型
回應傳送至 IoT 中樞事件資料流的事件。 觸發程序

安裝擴充功能

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

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

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

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

此版本使用較新的事件中樞繫結類型 Azure.Messaging.EventHubs.EventData

此延伸模組版本可透過安裝 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 設定

host.json 檔案包含控制事件中樞觸發程序行為的設定。 視延伸模組版本而定,設定會有所不同。

{
    "version": "2.0",
    "extensions": {
        "eventHubs": {
            "maxEventBatchSize" : 10,
            "batchCheckpointFrequency" : 5,
            "prefetchCount" : 300,
            "transportType" : "amqpWebSockets",
            "webProxy" : "https://proxyserver:8080",
            "customEndpointAddress" : "amqps://company.gateway.local",
            "initialOffsetOptions" : {
                "type" : "fromStart",
                "enqueuedTimeUtc" : ""
            },
            "clientRetryOptions":{
                "mode" : "exponential",
                "tryTimeout" : "00:01:00",
                "delay" : "00:00:00.80",
                "maximumDelay" : "00:01:00",
                "maximumRetries" : 3
            }
        }
    }
}  
屬性 預設 描述
maxEventBatchSize 10 單一引動過程的批次中會包含的事件數量上限。 必須至少為 1。
batchCheckpointFrequency 1 建立事件中樞的檢查點前要處理的批次數量。
prefetchCount 300 事件中樞會積極要求且會保留在本機快取中的事件數量,以便於讀取事件,避免在網路作業時等待。
transportType amqpTcp 用來與事件中樞通訊的通訊協定和傳輸。 可用選項:amqpTcpamqpWebSockets
webProxy 用來透過 Web 通訊端與事件中樞通訊的 Proxy。 Proxy 無法與 amqpTcp 傳輸搭配使用。
customEndpointAddress 與事件中樞建立連線時使用的位址,可讓網路要求透過應用程式閘道或其他主機環境需要的路徑進行傳送。 使用自訂端點位址時,事件中樞仍需要完整的命名空間,而且必須明確指定或透過連接字串指定。
initialOffsetOptions/type fromStart 當檢查點不存在儲存體中時,事件資料流開始處理的位置。 適用於所有分割區。 如需詳細資訊,請參閱 OffsetType 文件。 可用選項:fromStartfromEndfromEnqueuedTime
initialOffsetOptions/enqueuedTimeUtc 在要開始處理的資料流中,指定事件的加入佇列時間。 當 initialOffsetOptions/type 設定為 fromEnqueuedTime 時,這是必要設定。 支援 DateTime.Parse() (例如 2020-10-26T20:31Z) 支援格式的時間。 為了清楚起見,您也應該指定時區。 若未指定時區,函式會假設執行函數應用程式電腦的當地時區,這在 Azure 上執行時是 UTC。
clientRetryOptions/mode 指數 用於計算重試延遲的方法。 指數模式會重新嘗試,而重試延遲以輪詢策略為基礎,每個嘗試都會增加重試前的等候持續時間。 固定模式會以固定間隔重試,而每個延遲都有一致的持續時間。 可用選項:exponentialfixed
clientRetryOptions/tryTimeout 00:01:00 每次嘗試時,等候事件中樞作業完成的持續時間上限。
clientRetryOptions/delay 00:00:00.80 要在重試嘗試之間套用的延遲或後退因素。
clientRetryOptions/maximumDelay 00:00:01 重試之間允許的延遲時間上限。
clientRetryOptions/maximumRetries 3 在將相關聯的作業視為失敗之前重試嘗試的次數上限。

有關 Azure Functions 2.x 和更高版本中 host.json 的參考,請參閱適用於 Azure Functions 的 host.json 參考

後續步驟