Partilhar via


Estrutura de mensagens em pipelines de processador de dados

Importante

Azure IoT Operations Preview – habilitado pelo Azure Arc está atualmente em visualização. Não deve utilizar este software de pré-visualização em ambientes de produção.

Você precisará implantar uma nova instalação do Azure IoT Operations quando uma versão disponível em geral for disponibilizada, você não poderá atualizar uma instalação de visualização.

Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

O processador de dados processa as mensagens recebidas passando-as por uma série de estágios de pipeline. Cada estágio no pipeline pode transformar a mensagem antes de passá-la para o próximo estágio. Este artigo descreve a estrutura usada para representar as mensagens à medida que elas se movem pelo pipeline. Compreender a estrutura da mensagem é importante quando você configura estágios de pipeline para processar suas mensagens de telemetria.

O exemplo a seguir mostra a representação JSON de uma mensagem que foi lida do broker MQTT por um pipeline:

{
    "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 dados

As mensagens do processador de dados suportam os seguintes tipos de dados:

  • Mapa
  • Matriz
  • Boolean
  • Inteiro – tamanho de 64 bits
  • Float – tamanho de 64 bits
  • String
  • Binário

Dados do sistema

Todos os metadados no nível do systemProperties sistema são colocados no nó:

Property Descrição Type Nota
timestamp Um carimbo de data/hora de milissegundos UTC de RFC3339 que representa a hora em que o sistema recebeu a mensagem. String Este campo é sempre adicionado na fase de entrada.
partitionId A partição física da mensagem. Número inteiro Este campo é sempre adicionado na fase de entrada.
partitionKey A chave de partição lógica definida no estágio de entrada. String Este campo só é adicionado se você definiu uma expressão de partição.

Payload

A seção de carga útil contém o conteúdo principal da mensagem de entrada. O conteúdo da payload seção depende do formato escolhido no estágio de entrada do pipeline:

  • Se você escolher o Raw formato no estágio de entrada, o conteúdo da carga útil será binário.
  • Se o estágio de entrada analisar seus dados, o conteúdo da carga útil será representado de acordo.

Por padrão, o pipeline não analisa a carga útil de entrada. O exemplo anterior mostra dados de entrada analisados. Para saber mais, consulte Formatos de mensagem.

Metadados

Todos os metadados que não fazem parte dos dados primários tornam-se propriedades de nível superior na mensagem:

Property Descrição Type Nota
topic O tópico a partir do qual a mensagem é lida. String Este campo é sempre adicionado na entrada.
qos A qualidade do nível de serviço escolhido na fase de entrada. Número inteiro Este campo é sempre adicionado na etapa de entrada.
packetId O ID do pacote da mensagem. Número inteiro Este campo só é adicionado se a qualidade do serviço for 1 ou 2.
properties A chave de partição lógica definida no estágio de entrada. Mapa O saco da propriedade é sempre adicionado.
userProperties Propriedades definidas pelo usuário. Matriz O saco da propriedade é sempre adicionado. O conteúdo pode estar vazio se nenhuma propriedade de usuário estiver presente na mensagem.