Azure Functions の Azure Event Hubs 出力バインディング

この記事では、Azure Functions で Azure Event Hubs のバインドを使用する方法について説明します。 Azure Functions は、イベント ハブのトリガーおよび出力バインドをサポートしています。

セットアップと構成の詳細については、概要に関するページをご覧ください。

Event Hubs 出力バインドを使用して、イベント ストリームにイベントを書き込みます。 イベントを書き込むには、イベント ハブへの送信アクセス許可が必要です。

出力バインディングを実装する前に、必要なパッケージ参照が用意されていることを確認してください。

次の例は、メソッドの戻り値を出力として使用してメッセージをイベント ハブに書き込む 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 インターフェイスを使用してメッセージのバッチを送信する方法を示します。 これは、1 つのイベント ハブから送信されるメッセージを処理し、その結果を別のイベント ハブに送信する場合の一般的なシナリオです。

[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 該当なし "eventHub" に設定する必要があります。
direction 該当なし "out" に設定する必要があります。 このパラメーターは、Azure Portal でバインドを作成するときに自動で設定されます。
name 該当なし イベントを表す関数コードに使用される変数の名前。
path EventHubName Functions 1.x のみ。 イベント ハブの名前。 イベント ハブの名前は接続文字列にも存在し、その値が実行時にこのプロパティをオーバーライドします。
eventHubName EventHubName Functions 2.x 以降。 イベント ハブの名前。 イベント ハブの名前は接続文字列にも存在し、その値が実行時にこのプロパティをオーバーライドします。
connection Connection イベント ハブの名前空間への接続文字列が含まれたアプリ設定の名前。 この接続文字列をコピーするには、イベント ハブ自体ではなく、"名前空間" の [接続情報] をクリックします。 この接続文字列には、イベント ストリームにメッセージを送信するための送信アクセス許可が必要です。

バージョン 5.x またはそれ以降の拡張機能を使用している場合は、接続文字列の代わりに、接続を定義する構成セクションへの参照を指定できます。 「接続」を参照してください。

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。

使用法

Default

Event Hub の出力バインドに次のパラメーター型を使用できます。

out string paramName などのメソッド パラメーターを使用してメッセージを送信します。 C# スクリプトでは、paramNamefunction.jsonname プロパティで指定された値です。 複数のメッセージを書き込むには、out string の代わりに ICollector<string> または IAsyncCollector<string> を使用します。

その他の型

5.0.0 以降のバージョンのイベント ハブ拡張機能を使用するアプリでは、Microsoft.Azure.EventHubs 名前空間の代わりに Azure.Messaging.EventHubsEventData 型を使用します。 このバージョンでは、次の型を優先して、レガシ Body 型のサポートがなくなります。

例外とリターン コード

バインド リファレンス
イベント ハブ 運用ガイド

次のステップ