Espaces thématiques dans le broker Azure Event Grid MQTT

Un espace thématique représente plusieurs sujets à travers un ensemble de modèles thématiques. Les modèles de rubrique étendent les filtres de rubrique MQTT en prenant en charge des variables, en plus des caractères génériques MQTT standard. Chaque espace thématique représente les sujets MQTT que le même ensemble de clients utilise pour communiquer.

Les espaces thématiques simplifient le contrôle d’accès en vous permettant d’accorder, publier ou vous abonner à un groupe de sujets simultanément, au lieu de gérer l’accès pour chaque sujet individuel. Le modèle de contrôle d’accès combine quatre ressources pour accorder à un groupe client l’accès à la publication ou à l’abonnement à un espace thématique :

  • Client : Représente un appareil ou une application qui communique via MQTT.
  • Groupe client : Regroupe les clients qui ont besoin du même accès au même ensemble de sujets MQTT.
  • Espace thématique : Regroupe un ou plusieurs modèles de sujets représentant les sujets ou filtres de sujet prévus.
  • Attribution des permissions : Accorde à un groupe client l’accès à la publication ou à l’abonnement à un espace thématique.

Pour plus d’informations, voir le contrôle d’accès pour les clients MQTT.

Cet article explique comment les filtres de sujets, les modèles de sujets et la configuration de l’espace thématique MQTT fonctionnent ensemble, afin que vous puissiez regrouper les sujets liés et gérer efficacement l’accès des clients.

Filtres thématiques MQTT

Un filtre de sujet MQTT est un sujet MQTT qui peut inclure des jokers pour un ou plusieurs de ses segments, afin de correspondre à plusieurs sujets MQTT. Les filtres thématiques simplifient les demandes d’abonnement, car un filtre de sujet peut correspondre à plusieurs sujets.

Le courtier MQTT prend en charge tous les jokers MQTT définis par la spécification MQTT :

  • + correspond à un seul segment. Par exemple, le filtre machines/+/alert thématique correspond à ces sujets :
    • machines/temp/alert
    • machines/humidity/alert
  • # correspond à zéro ou plusieurs segments à la fin de la rubrique. Par exemple, le filtre machines/# thématique correspond à ces sujets :
    • machines
    • machines/temp
    • machines/humidity
    • machines/temp/alert

Pour plus d’informations sur les caractères génériques, consultez Caractères génériques de rubrique dans la spécification MQTT.

Modèles de rubrique

Les modèles de rubriques étendent les filtres de rubrique MQTT en prenant en charge des variables, en plus des caractères génériques MQTT. La configuration en espace thématique offre également un contrôle d’accès granulaire en vous permettant de contrôler l’autorisation de chaque client au sein d’un groupe client à publier ou s’abonner à son propre sujet. Pour plus d’informations, voyez comment les modèles de sujets offrent un contrôle d’accès granulaire.

Configuration de l’espace thématique

Un espace thématique peut regrouper jusqu’à 10 modèles de sujets. Les modèles de sujets prennent en charge les jokers MQTT (+ et #) ainsi que les variables suivantes :

  • ${client.authenticationName}: Représente le nom d’authentification du client. Pour plus d’informations, voir les termes clés des métadonnées clients.
  • ${client.attributes.x}: Représente un attribut attribué à un client lors de la création ou de la mise à jour du client, où x est la chaîne exacte de la clé d’attribut. Par exemple, si un client possède l’attribut area:section1, le modèle area/${client.attributes.area}/telemetry de sujet permet uniquement aux clients ayant cet attribut de publier sur le sujet area/section1/telemetryMQTT . Pour plus d’informations, consultez les clients MQTT.

Note

  • Les sujets qui commencent $ sont réservés à un usage interne.
  • Une variable peut représenter une portion d’un segment ou un segment entier, mais elle ne peut pas couvrir plus d’un segment. Par exemple, le modèle machines/${client.authenticationName|.factory1}/temp de sujet correspond à des sujets tels que machines/machine1.factory1/temp et machines/machine2.factory1/temp.
  • Les modèles de sujets utilisent les caractères $ spéciaux et |, que vous pourriez devoir éliminer selon l'interpréteur de commande que vous utilisez. Par exemple, dans PowerShell, échappez ces caractères comme indiqué dans les exemples suivants :
    • "vehicles/${client.authenticationName|dollar}/#"
    • vehicles/${client.authenticationName"|"dollar}/#

Pour créer un espace thématique dans le portail Azure ou avec la ligne de commande Azure CLI, consultez Publier et s’abonner aux messages MQTT. Lorsque vous nommez un espace thématique, utilisez ces règles :

  • Le nom d’un espace thématique peut faire entre 3 et 50 caractères.
  • Un nom d’espace thématique peut inclure des caractères alphanumériques et des traits d’union (-), sans espaces.

Capture d’écran de la configuration de l’espace thématique dans le portail Azure.

L’exemple suivant d’Azure CLI crée un espace thématique qui comporte deux modèles de sujets :

az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]

Note

Les mises à jour de configuration en espace thématique peuvent prendre quelques minutes à être propagées.