Partage via


Filtrage des messages routés MQTT

Vous pouvez utiliser la fonctionnalité de filtrage de l’abonnement Event Grid pour filtrer les messages MQTT routés.

Filtrage de rubriques

Vous pouvez filtrer les rubriques MQTT des messages via le filtrage sur la propriété « subject » dans le schéma Cloud Event. Les abonnements Event Grid prennent en charge le filtrage d’objet simple gratuit en spécifiant une valeur de début ou de fin pour l’objet. Par exemple,

  • Si chaque véhicule publie sa localisation sur son propre sujet (vehicles/vehicle1/gps, vehicles/vehicle2/gps, etc.), vous pouvez utiliser le filtre : l’objet se termine par « gps » pour acheminer uniquement tous les messages de localisation.
  • Si des machines de chaque section de chaque usine publient sur des rubriques qui imitent la hiérarchie d’usine (par exemple, factory1/area2/machine4/telemetry), vous pouvez utiliser le filtre : l’objet commence par « factory1/area2/ » pour acheminer uniquement les messages qui appartiennent à factory1 et à la zone 2 vers un point de terminaison spécifique. Vous pouvez répliquer cette configuration pour acheminer les messages d’autres usines/zones vers différents points de terminaison.

Vous pouvez également tirer parti du filtrage avancé de l’abonnement aux événements pour filtrer en fonction de la rubrique MQTT via le filtrage sur la propriété subject dans le schéma d’événement Cloud. Les filtres avancés vous permettent de définir des filtres plus complexes en spécifiant un opérateur de comparaison, une clé et une valeur.

Filtrage de charge utile

Pour les messages MQTT v5 de type de contenu = « application/json ; charset=utf-8 » ou d’un indicateur de format de charge utile=1, la charge utile est transférée dans l’objet de données et le message est sérialisé en tant que JSON (ou chaîne JSON si la charge utile n’est pas JSON). La définition du type de contenu et/ou de l’indicateur de format de charge utile vous permet de filtrer vos propriétés de charge utile telles qu’elles sont transférées dans le champ de données en l’état.

Charge utile JSON

Si vous envoyez une charge utile JSON, elle sera sérialisée en tant que JSON et vous pourrez filtrer chaque propriété de votre JSON, à l’aide du filtrage avancé d’abonnement aux événements.

Par exemple, si vous envoyez la charge utile suivante :

{
	"Temp": 70,
	"humidity": 40
}

Vous pouvez utiliser le filtre suivant pour filtrer tous les messages dont la valeur de température est supérieure à 100 :

"advancedFilters": [{
    "operatorType": "NumberGreaterThan",
    "key": "data.Temp",
    "value": 100
}]

Charge utile non-JSON

Si vous envoyez une charge utile non-JSON qui est toujours UFT-8, elle est sérialisée en tant que chaîne JSON. Par exemple, si vous envoyez la charge utile suivante :

{
	Hello Contoso.
}

Vous pouvez utiliser le filtre suivant pour filtrer tous les messages qui incluent le mot « Contoso » :

"advancedFilters": [{
    "operatorType": "StringContains",
    "key": "data",
    "value": "Contoso"
}]

Filtrage de l’enrichissement

Des enrichissements sont ajoutés à vos attributs CloudEvent routés, et vous pouvez les filtrer à l’aide du filtrage avancé de l’abonnement aux événements.

Par exemple, si vous avez ajouté l’enrichissement suivant :

{
	"key": "clienttype",
	"value": "${client.attributes.type}"
}

Vous pouvez utiliser le filtre suivant pour filtrer tous les messages provenant de vos clients de type « sensor » :

"advancedFilters": [{"
    operatorType": "StringContains",
    "key": "clienttype", 
    "value": "sensor"
}]

Étapes suivantes :

Pour en savoir plus sur le routage, lisez les articles suivants :

Démarrage rapide :

Concepts :