Filtragem de mensagens MQTT roteadas
Use a funcionalidade de filtragem de assinatura da Grade de Eventos para filtrar as mensagens MQTT roteadas.
Filtragem de tópicos
Você pode filtrar os tópicos MQTT das mensagens por meio da filtragem na propriedade "subject" no esquema de Evento de Nuvem. As assinaturas da Grade de Eventos dão suporte à filtragem de entidade simples livre com a especificação de um valor inicial ou final para a entidade. Por exemplo,
- Se cada veículo publicar a localização em um tópico próprio (vehicles/vehicle1/gps, vehicles/vehicle2/gps etc.), você poderá usar o filtro: entidade termina com "gps" para rotear apenas as mensagens de localização.
- Se os computadores de cada seção de cada fábrica fizerem a publicação em tópicos que simulam a hierarquia da fábrica (por exemplo, factory1/area2/machine4/telemetry), você poderá usar o filtro: a entidade começa com "factory1/area2/" para rotear apenas as mensagens que pertencem à facotry1 e à area2 para um ponto de extremidade específico. Você pode replicar essa configuração para rotear mensagens de outras fábricas/áreas para pontos de extremidade diferentes.
Aproveite também a filtragem avançada de assinatura de evento para filtrar o conteúdo com base no tópico MQTT por meio da filtragem na propriedade de entidade no Esquema de Eventos de Nuvem. Os filtros avançados permitem definir filtros mais complexos com a especificação de um operador de comparação, uma chave e um valor.
Filtragem de conteúdo
Para mensagens MQTT v5 com o tipo de conteúdo “application/json; charset=utf-8” ou com um indicador de formato de conteúdo igual a 1, o conteúdo será encaminhado no objeto de dados e a mensagem será serializada como um JSON (ou uma cadeia de caracteres JSON se o conteúdo não for um JSON). A definição do tipo de conteúdo e/ou do indicador de formato de conteúdo permite filtrar as propriedades de conteúdo conforme ele é encaminhado dentro do campo de dados no estado em que se encontra.
conteúdo JSON
Se você enviar um conteúdo JSON, ele será serializado como um JSON adequado e você poderá filtrar cada propriedade no JSON usando a filtragem avançada da assinatura de evento.
Por exemplo: se você enviar o seguinte conteúdo:
{
"Temp": 70,
"humidity": 40
}
Poderá usar o seguinte filtro para filtrar todas as mensagens com um valor de temperatura acima de 100:
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.Temp",
"value": 100
}]
Conteúdo não JSON
Se você enviar um conteúdo não JSON que ainda seja UFT-8, ele será serializado como uma cadeia de caracteres JSON. Por exemplo, se você enviar o seguinte conteúdo:
{
Hello Contoso.
}
Poderá usar o seguinte filtro para filtrar todas as mensagens que incluam a palavra “Contoso”:
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data",
"value": "Contoso"
}]
Filtragem de enriquecimento
Os enriquecimentos são adicionados aos atributos do CloudEvent roteado, e você poderá filtrá-los usando a filtragem avançada da assinatura de evento.
Por exemplo, se você adicionar o seguinte enriquecimento:
{
"key": "clienttype",
"value": "${client.attributes.type}"
}
Poderá usar o seguinte filtro para filtrar todas as mensagens provenientes dos clientes do tipo "sensor":
"advancedFilters": [{"
operatorType": "StringContains",
"key": "clienttype",
"value": "sensor"
}]
Próximas etapas:
Use os seguintes artigos para saber mais sobre roteamento:
Guia de Início Rápido:
- Tutorial: Encaminhar mensagens MQTT para Hubs de Eventos do Azure usando tópicos de namespace
- Tutorial: Encaminhar mensagens MQTT para Azure Functions usando tópicos personalizados