Azure IoT 中樞 Azure Functions 的輸出系結

本文說明如何使用適用于 IoT 中樞的 Azure Functions 輸出系結。 IoT 中樞支援是以 Azure 事件中樞系結為基礎。

如需安裝和設定詳細資料的相關資訊,請參閱概觀

重要

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

使用事件中樞輸出繫結將事件寫入事件串流。 您必須具備事件中樞的傳送權限,才能將事件寫入其中。

請先確定必要的套件參考已就緒,再嘗試實作輸出繫結。

下列範例顯示將訊息寫入事件中樞,並使用方法傳回值作為輸出的 C# 函式

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    return $"{DateTime.Now}";
}

下列程式碼示範如何使用 IAsyncCollector 介面來傳送一批訊息。 當您處理來自某個事件中樞的訊息,並將結果傳送至另一個事件中樞時,此案例很常見。

[FunctionName("EH2EH")]
public static async Task Run(
    [EventHubTrigger("source", Connection = "EventHubConnectionAppSetting")] EventData[] events,
    [EventHub("dest", Connection = "EventHubConnectionAppSetting")]IAsyncCollector<string> outputEvents,
    ILogger log)
{
    foreach (EventData eventData in events)
    {
        // do some processing:
        var myProcessedEvent = DoSomething(eventData);

        // then send the message
        await outputEvents.AddAsync(JsonConvert.SerializeObject(myProcessedEvent));
    }
}

屬性和註釋

對於 C# 類別庫,請使用 EventHubAttribute 屬性。

此屬性的建構函式接受事件中樞的名稱,以及包含連接字串的應用程式設定名稱。 如需這些設定的詳細資訊,請參閱輸入 - 組態一節。 以下是 EventHub 屬性範例:

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    ...
}

如需完整範例,請參閱輸出 - C# 範例

組態

下表說明您在 function.json 檔案中設定的繫結設定屬性內容和 EventHub 屬性。

function.json 屬性 屬性內容 描述
type n/a 必須設定為 "eventHub"。
direction n/a 必須設定為 "out"。 當您在 Azure 入口網站中建立繫結時,會自動設定此參數。
name n/a 函式程式碼中所使用的變數名稱,代表事件。
path EventHubName 僅限 Functions 1.x。 事件中樞的名稱。 當事件中樞名稱也呈現於連接字串時,該值會在執行階段覆寫這個屬性。
eventHubName EventHubName Functions 2.x 和更新版本。 事件中樞的名稱。 當事件中樞名稱也呈現於連接字串時,該值會在執行階段覆寫這個屬性。
connection [連接] 應用程式設定的名稱,其中包含事件中樞命名空間的連接字串。 按一下命名空間的 [連接資訊] 按鈕 (而不是事件中樞本身),來複製此連接字串。 此連接字串必須具有傳送權限,才能將訊息傳送至事件資料流。

如果您使用 版本5.x 或更高版本的擴充功能,而不是連接字串,您可以提供定義連接的設定區段參考。 請參閱 連接

當您要在本機開發時,應用程式設定會進入 local.settings.json 檔案

使用量

預設

您可以針對事件中樞的輸出系結使用下列參數類型:

使用方法參數 (例如 out string paramName) 來傳送訊息。 在 C# 指令碼中,paramNamefunction.jsonname 屬性中指定的值。 若要寫入多則訊息,您可以使用 ICollector<string>IAsyncCollector<string> 取代 out string

其他類型

使用5.0.0 或更高版本之事件中樞延伸模組的應用程式會使用 EventData EventHubs 中的類型,而不是 EventHubs 命名空間中的類型。 此版本會捨棄舊版類型的支援, Body 以支援下列類型:

例外狀況和傳回碼

繫結 參考
事件中樞 操作指南 (英文)

下一步