Compartir por


Estructura de mensajes en una canalización de la versión preliminar del procesador de datos de Azure IoT

Importante

Operaciones de IoT de Azure, habilitado por Azure Arc, está actualmente en VERSIÓN PRELIMINAR. No se debería usar este software en versión preliminar en entornos de producción.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

El procesador de datos de Azure IoT (versión preliminar) procesa los mensajes entrantes pasándolos a través de una serie de fases de canalización. Cada fase de la canalización puede transformar el mensaje antes de pasarlo a la siguiente fase. En este artículo se describe la estructura usada para representar los mensajes a medida que se mueven por la canalización. El reconocimiento de la estructura de los mensajes es importante a la hora de configurar las fases de la canalización para procesar los mensajes de telemetría.

En el ejemplo siguiente se programa la representación JSON de un mensaje leído de vista preliminar de Azure IoT MQ por una canalización:

{
    "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
            }
        ] 
    } 
}

Tipos de datos

Los mensajes del procesador de datos admiten los siguientes tipos de datos:

  • Asignar
  • Matriz
  • Booleano
  • Entero: tamaño de 64 bits
  • Float: tamaño de 64 bits
  • String
  • Binary

Datos del sistema

Todos los metadatos a nivel de sistema se colocan en el nodosystemProperties:

Propiedad Descripción Tipo Nota:
timestamp Marca de tiempo de RFC3339 milisegundos UTC que representa la hora en que el sistema recibió el mensaje. String Este campo siempre se agrega en la fase de entrada.
partitionId La partición física del mensaje. Entero Este campo siempre se agrega en la fase de entrada.
partitionKey La clave de partición lógica definida en la fase de entrada. String Este campo solo se agrega si definió una expresión de partición.

Carga útil

La sección de carga contiene el contenido principal del mensaje entrante. El contenido de payload la sección depende del formato elegido en la fase de entrada de la canalización:

  • Si eligió el formato Rawen la fase de entrada, el contenido de la carga es binario.
  • Si la fase de entrada analiza los datos, el contenido de la carga se representa en consecuencia.

De manera predeterminada, la canalización no analiza la carga entrante. En el ejemplo anterior se programan los datos de entrada analizados. Para más información, consulte formatos de mensaje.

Metadatos

Todos los metadatos que no forman parte de los datos principales se convierten en propiedades de nivel superior dentro del mensaje:

Propiedad Descripción Tipo Nota:
topic El tema del que se lee el mensaje. String Este campo siempre se agrega en la entrada.
qos El nivel de calidad de servicio elegido en la fase de entrada. Entero Este campo siempre se agrega en la fase de entrada.
packetId El Id. del paquete del mensaje. Entero Este campo solo se agrega si la calidad del servicio es 1 o 2.
properties La clave de partición lógica definida en la fase de entrada. Asignar El contenedor de propiedades siempre se agrega.
userProperties Propiedades definidas por el usuario. Matriz El contenedor de propiedades siempre se agrega. El contenido puede estar vacío si no hay propiedades de usuario en el mensaje.