Esquema de eventos para mensagens roteadas MQTT
As mensagens MQTT são roteadas para um tópico de grade de eventos como CloudEvents de acordo com a seguinte lógica:
Para mensagens MQTT v3 ou mensagens MQTT v5 de um indicador de formato de carga útil = 0, a carga será encaminhada no objeto data_base64 e codificada como uma cadeia de caracteres base 64 de acordo com o exemplo de esquema a seguir.
{
"specversion": "1.0",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e20", // unique id stamped by the service.
"time": "2019-11-18T15:13:39.4589254Z", // timestamp when the message was received by the service.
"type": "MQTT.EventPublished", // set type for all MQTT messages enveloped by the service.
"source": "testnamespace", // namespace name
"subject": "campus/buildings/building17", // topic of the MQTT publish request.
"data_base64":
{
IlRlbXAiOiAiNzAiLAoiaHVtaWRpdHkiOiAiNDAiCg==
}
}
Para mensagens MQTT v5 do tipo de conteúdo= "application/json; charset=utf-8" ou de um indicador de formato de carga útil=1, a carga será encaminhada no objeto de dados e a mensagem será serializada como um JSON (ou uma cadeia de caracteres JSON se a carga não for um JSON). Definir o tipo de conteúdo e/ou o indicador de formato de carga útil permite filtrar as propriedades da carga útil à medida que a carga é encaminhada dentro do campo de dados como está. Saiba mais sobre como filtrar a carga útil da mensagem.
{
"specversion": "1.0",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e20", // unique id stamped by the service.
"time": "2019-11-18T15:13:39.4589254Z", // timestamp when the message was received by the service.
"type": "MQTT.EventPublished", // set type for all MQTT messages enveloped by the service.
"source": "testnamespace", // namespace name
"subject": "campus/buildings/building17", // topic of the MQTT publish request.
"data":
{
"Temp": 70,
"humidity": 40
}
}
Para mensagens MQTT v5 que já estão envolvidas em um CloudEvent de acordo com a vinculação do protocolo MQTT para CloudEvents , seja usando o modo de conteúdo binário ou o modo de conteúdo estruturado na codificação JSON (utf-8), o evento será encaminhado com os atributos padrão originais do CloudEvents após o enriquecimento de acordo com o exemplo de esquema a seguir.
{
"specversion": "1.0",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e20", // original id stamped by the client.
"time": "2019-11-18T15:13:39.4589254Z", // timestamp when the message was received by the client
"type": "Custom.Type", // original type value stamped by the client.
"source": "Custom.Source", // original source value stamped by the client.
"subject": " Custom.Subject", // original subjectvalue stamped by the client.
"data":
{
"Temp": "70",
"humidity": "40"
}
}
Passos seguintes:
Use os seguintes artigos para saber mais sobre roteamento:
Início rápido:
- Tutorial: Encaminhar mensagens MQTT para Hubs de Eventos do Azure usando tópicos de namespace
- Tutorial: Encaminhar mensagens MQTT para o Azure Functions usando tópicos personalizados
Conceitos:
- Encaminhamento
- Filtragem de roteamento
- Enriquecimento de roteamento