Filtrado de mensajes MQTT enrutados
Puede usar la funcionalidad de filtrado de la suscripción de Event Grid para filtrar los mensajes MQTT enrutados.
Filtrado de temas
Puede filtrar por los temas MQTT de los mensajes mediante el filtrado de la propiedad "subject" (asunto) en el esquema de eventos en la nube. Las suscripciones de Event Grid admiten el filtrado de asunto sencillo libre especificando un valor inicial o final del asunto. Por ejemplo,
- Si cada vehículo publica su ubicación en su propio tema (vehicles/vehicle1/gps, vehicles/vehicle2/gps, etc.), puede utilizar el filtro: el asunto termina con "gps" para enrutar solo todos los mensajes de ubicación.
- Si las máquinas de cada sección de cada fábrica publican en temas que imitan la jerarquía de la fábrica (por ejemplo, factory1/area2/machine4/telemetry), puede usar el filtro: asunto comienza por "factory1/area2/" para enrutar solo los mensajes que pertenecen a factory1 y el area2 a un punto de conexión específico. Puede replicar esta configuración para enrutar mensajes de otras fábricas o áreas a distintos puntos de conexión.
También puede aprovechar el filtrado avanzado de la suscripción de eventos para filtrar en función del tema MQTT mediante el filtrado de la propiedad subject en el esquema de eventos en la nube. Los filtros avanzados permiten establecer filtros más complejos especificando una clave, un valor y un operador de comparación.
Filtrado de carga
Para los mensajes MQTT v5 de tipo de contenido= "application/json; charset=utf-8" o de un indicador de formato de carga =1, la carga se reenviará en el objeto de datos y el mensaje se serializará como JSON (o una cadena JSON si la carga no es JSON). Establecer el tipo de contenido o el indicador de formato de carga le permite filtrar por las propiedades de carga tal y como se reenvía en el campo de datos.
carga de JSON
Si envía una carga JSON, se serializará como un JSON adecuado y podrá filtrar por cada propiedad de JSON mediante el filtrado avanzado de la suscripción de eventos.
Por ejemplo, si envía la siguiente carga:
{
"Temp": 70,
"humidity": 40
}
Puede usar el siguiente filtro para filtrar todos los mensajes con un valor de temperatura superior a 100:
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.Temp",
"value": 100
}]
Carga no JSON
Si envía una carga no JSON que sigue siendo UFT-8, se serializará como una cadena JSON. Por ejemplo, si envía la siguiente carga:
{
Hello Contoso.
}
Puede usar el siguiente filtro para filtrar todos los mensajes que incluyen la palabra "Contoso":
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data",
"value": "Contoso"
}]
Filtrado de enriquecimiento
Los enriquecimientos se agregan a los atributos de CloudEvent enrutados y puede filtrarlos mediante el filtrado avanzado de la suscripción de eventos.
Por ejemplo, si agregó el enriquecimiento siguiente:
{
"key": "clienttype",
"value": "${client.attributes.type}"
}
Puede usar el siguiente filtro para filtrar todos los mensajes procedentes de los clientes de tipo "sensor":
"advancedFilters": [{"
operatorType": "StringContains",
"key": "clienttype",
"value": "sensor"
}]
Pasos siguientes:
Para obtener más información sobre el enrutamiento, use los siguientes artículos:
Inicio rápido:
- Tutorial: Enrutamiento de mensajes MQTT a Azure Event Hubs mediante temas de espacio de nombres
- Tutorial: Enrutamiento de mensajes MQTT a Azure Functions mediante temas personalizados