次の方法で共有


Azure IoT Data Processor プレビュー パイプラインのメッセージ構造

重要

Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

Azure IoT Data Processor プレビューは、一連のパイプライン ステージを通じて受信メッセージを処理します。 パイプライン内の各ステージは、メッセージを次のステージに渡す前に変換できます。 この記事では、パイプライン内を移動するメッセージを表すために使用される構造について説明します。 テレメトリ メッセージを処理するようにパイプライン ステージを構成する場合は、メッセージ構造を理解することが重要です。

次の例は、パイプラインによって Azure IoT MQ プレビューから読み取られたメッセージの JSON 表現を示しています。

{
    "systemProperties":{
        "partitionKey":"foo",
        "partitionId":5,
        "timestamp":"2023-01-11T10:02:07Z"
    },
    "qos":1,
    "topic":"/assets/foo/tags/bar",
    "properties":{
        "responseTopic":"outputs/foo/tags/bar",
        "contentType": "application/json",
        "payloadFormat":1,
        "correlationData":"base64::Zm9v",
        "messageExpiry":412
    },
    "userProperties":[
        {
            "key":"prop1",
            "value":"value1"
        },
        {
            "key":"prop2",
            "value":"value2"
        }
    ],
    "payload":
    { 
        "values":[ 
            { 
                "timeStamp":"2022-06-14T16:59:01Z", 
                "tag":"temperature", 
                "numVal":250
            }, 
            { 
                "timeStamp":"2022-06-14T16:59:01Z", 
                "tag":"pressure", 
                "numVal":30 
            }, 
            { 
                "timeStamp":"2022-06-14T16:59:01Z", 
                "tag":"humidity", 
                "numVal":10
            }, 
            { 
                "timeStamp":"2022-06-14T16:59:01Z", 
                "tag":"runningStatus", 
                "boolVal":true
            }
        ] 
    } 
}

データ型

データ プロセッサ メッセージでは、次のデータ型がサポートされます。

  • マップ
  • Array
  • ブール型
  • 整数 – 64 ビット サイズ
  • 浮動 – 64 ビット サイズ
  • String
  • バイナリ

システム データ

すべてのシステム レベルのメタデータが systemProperties ノードに配置されます。

プロパティ 説明 Type Note
timestamp システムがメッセージを受信した時刻を表すRFC3339 UTC ミリ秒のタイムスタンプ。 String このフィールドは、常に入力ステージで追加されます。
partitionId メッセージの物理パーティション。 整数型 このフィールドは、常に入力ステージで追加されます。
partitionKey 入力ステージで定義された論理パーティション キー。 String このフィールドは、パーティション式を定義した場合にのみ追加されます。

Payload

payload セクションには、受信メッセージのプライマリ コンテンツが含まれています。 payload セクションの内容は、パイプラインの入力ステージで選択した形式によって異なります。

  • 入力ステージで Raw 形式を選択した場合、ペイロードの内容はバイナリになります。
  • 入力ステージがデータを解析する場合、ペイロードの内容はそれに応じて表されます。

既定では、パイプラインは受信ペイロードを解析しません。 上記の例は、解析された入力データを示しています。 詳細については、「メッセージ形式」を参照してください。

Metadata

プライマリ データに含まれていないすべてのメタデータは、メッセージ内の最上位のプロパティになります。

プロパティ 説明 Type Note
topic メッセージが読み取られたトピック。 String このフィールドは常に入力時に追加されます。
qos 入力ステージで選択されたサービス レベルの品質。 整数型 このフィールドは、常に入力ステージに追加されます。
packetId メッセージのパケット ID。 整数型 このフィールドは、サービスの品質が 1 または 2 の場合にのみ追加されます。
properties 入力ステージで定義された論理パーティション キー。 マップ プロパティ バッグは常に追加されます。
userProperties ユーザー定義プロパティ。 Array プロパティ バッグは常に追加されます。 メッセージにユーザー プロパティが存在しない場合は、コンテンツを空にすることができます。