デバイスからクラウドへのメッセージを組み込みのエンドポイントから読み取る

既定では、メッセージは Event Hubs と互換性のある、サービスに接続された組み込みエンドポイント (messages/events) にルーティングされます。 IoT Hub は、messages/events 組み込みエンドポイントをバックエンド サービスに公開して、Hub で受信した D2C メッセージを読み取ります。 エンドポイントは Event Hubs との互換性を持ち、Event Hubs がメッセージの読み取りでサポートするすべてのメカニズムを使用できるようになります。

メッセージ ルーティングを使用していて、フォールバック ルートが有効になっている場合、ルートに関するクエリに一致しないメッセージは、組み込みのエンドポイントに送信されます。 このフォールバック ルートを無効にすると、どのクエリにも一致しないメッセージは破棄されます。

このエンドポイントは、現在、ポート 5671 で AMQP プロトコルを使用して、またポート 443 で AMQP over WebSockets を使用して限定的に公開されています。 IoT Hub は、Event Hub と互換性のある組み込みのメッセージング エンドポイント messages/events を制御するための以下のプロパティを公開しています。

プロパティ 説明
パーティション数 このプロパティは作成時に設定し、device-to-cloud イベントを取り込む場合のパーティション数を定義します。
リテンション期間 このプロパティは、IoT Hub によってメッセージが保持される期間を日数で指定します。 既定は 1 日ですが、7 日間に増やすことができます。

IoT Hub を使用すると、組み込みのエンドポイントで最大 7 日間データを保持できます。 IoT ハブを作成するときに、保持期間を設定できます。 IoT Hub でのデータ保持期間は、お使いの IoT Hub のレベルとユニットの種類によって異なります。 サイズに関しては、組み込みのエンドポイントでは、最大メッセージ サイズのメッセージを少なくとも 24 時間のクォータまで保持できます。 たとえば、1 つの S1 ユニットの IoT ハブでは、1 つが 4 KB のメッセージを少なくとも 400,000 件保持するのに十分なストレージが提供されます。 デバイスで送信されるメッセージがそれより小さい場合、ストレージの消費量によっては、さらに長期間 (最大 7 日間) 保持される可能性があります。 少なくとも指定された保持期間はデータが保持されることが保証されます。 保持時間が経過すると、メッセージは期限切れになり、アクセスできなくなります。 保持期間は、IoT Hub のリソース プロバイダー REST API を使用してプログラムにより変更するか、Azure portal を使用して変更できます。

IoT Hub では、組み込みのエンドポイントでコンシューマー グループを管理ができます。 IoT ハブごとに最大 20 個のコンシューマー グループを持つことができます。

組み込みエンドポイントに接続する

一部の製品統合と Event Hubs SDK は IoT Hub を認識するので、IoT Hub サービスの接続文字列を使用して、組み込みのエンドポイントに接続できます。

IoT Hub を認識しない Event Hubs SDK や製品統合を使用している場合は、イベント ハブ互換エンドポイントとイベント ハブ互換名が必要です。 次のように、ポータルからこれらの値を取得できます。

  1. Azure Portal にサインインし、IoT Hub に移動します。

  2. リソース メニューの [ハブ設定] の下にある [組み込みのエンドポイント] を選びます。

  3. [組み込みのエンドポイント] 作業ペインには、次の 3 つのセクションがあります。

    • [イベント ハブの詳細] セクションには、[パーティション][イベントハブ互換名][保持日数][コンシューマー グループ] の各値が含まれます。
    • [イベント ハブ互換エンドポイント] セクションには、[共有アクセス ポリシー][イベントハブ互換エンドポイント] の値が含まれます。
    • [cloud-to-device メッセージング] セクションには、[既定の TTL][フィードバック維持時間][最大配信回数] の各値が含まれます。

    Screen capture showing device-to-cloud settings.

作業ペインの [イベント ハブ互換エンドポイント] フィールドには、次の例のような Event Hubs の完全な接続文字列が含まれます。

Endpoint=sb://abcd1234namespace.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=keykeykeykeykeykey=;EntityPath=iothub-ehub-abcd-1234-123456

使用している SDK で他の値が必要な場合、値は次のようになります。

名前
エンドポイント sb://abcd1234namespace.servicebus.windows.net/
hostname abcd1234namespace.servicebus.windows.net
名前空間 abcd1234namespace

前のスクリーンショットで示されているように、[共有アクセス ポリシー] ドロップダウンから任意の共有アクセス ポリシーを選択できます。 指定したイベント ハブに接続するための ServiceConnect のアクセス許可を持つポリシーのみが表示されます。

SDK のサンプル

IoT Hub が公開している組み込みのイベント ハブ互換エンドポイントに接続する際に使用できる SDK は次のとおりです。

Language SDK
.NET https://www.nuget.org/packages/Azure.Messaging.EventHubs ReadD2cMessages .NET
Java https://mvnrepository.com/artifact/com.azure/azure-messaging-eventhubs
Node.js https://www.npmjs.com/package/@azure/event-hubs read-d2c-messages Node.js
Python https://pypi.org/project/azure-eventhub/ read-dec-messages Python

IoT Hub が公開している組み込みのイベント ハブ互換エンドポイントで使用できる製品統合は次のとおりです。

次のステップ