Partager via


Routage des messages MQTT dans Azure Event Grid

Event Grid vous permet d’acheminer vos messages MQTT vers des services Azure ou des webhooks pour un traitement ultérieur. Par conséquent, vous pouvez créer des solutions de bout en bout en utilisant vos données IoT pour l’analyse des données, le stockage et les visualisations, entre autres cas d’usage.

Diagramme du routage des messages MQTT.

Comment utiliser la fonctionnalité de routage ?

Le routage des messages de vos clients vers un service Azure ou votre point de terminaison personnalisé vous permet d’optimiser les avantages de ces données. Voici quelques-uns des nombreux cas d’usage permettant de tirer parti de cette fonctionnalité :

  • Analyse des données : extrayez et analysez les messages acheminés de vos clients pour optimiser votre solution. Par exemple, analysez les données de télémétrie de vos machines pour prédire quand planifier la maintenance avant que des défaillances ne se produisent afin d’éviter les retards et les dommages supplémentaires.
  • Applications serverless : déclenchez une fonction serverless en fonction des messages acheminés de vos clients. Par exemple, lorsqu’un capteur de mouvement détecte un mouvement, envoyez une notification au personnel de sécurité pour y remédier.
  • Visualisations des données : créez des visualisations des données acheminées de vos clients pour représenter et comprendre facilement les données, ainsi que pour mettre en évidence les tendances et les valeurs hors norme.

Configuration du routage :

La configuration du routage vous permet d’envoyer tous vos messages MQTT de vos clients à une rubrique d’espace de noms Event Grid ou à une rubrique personnalisée Event Grid. Une fois que les messages se trouvent dans la rubrique, vous pouvez configurer un abonnement aux événements pour consommer les messages de la rubrique. Utilisez les étapes générales suivantes pour obtenir cette configuration :

  • Rubrique d’espace de noms en tant que destination de routage :
    • Créez une rubrique d’espace de noms Event Grid où tous les messages MQTT sont routés.
    • Créez un abonnement aux événements de type push pour acheminer ces messages vers l’un des services Azure pris en charge ou des webhooks personnalisés ou un abonnement aux événements de type de file d’attente pour tirer (pull) les messages directement à partir de la rubrique de l’espace de noms via votre application.
    • Définissez la configuration du routage en vous référant à la rubrique que vous avez créée à la première étape.

Diagramme du routage des messages MQTT vers les rubriques d’espace de noms.

Diagramme du routage des messages MQTT vers les rubriques personnalisées.

Remarque

La désactivation de l’accès au réseau public sur l’espace de noms entraîne l’échec du routage MQTT.

Différence entre les rubriques d’espace de noms et les rubriques personnalisées en tant que destination de routage

Le tableau suivant montre la différence entre les rubriques d’espace de noms et les rubriques personnalisées en tant que destination de routage. Pour obtenir une répartition détaillée des quotas et limites inclus dans chaque ressource Event Grid, consultez Quotas et limites.

Point de comparaison Rubrique d’espace de noms Rubrique personnalisée
Débit Élevé, jusqu’à 40 Mo/s (entrée) et 80 Mo/s (sortie) Faible, jusqu’à 5 Mo/s (entrée et sortie)
Livraison par extraction Oui
Livraison push à Event Hubs Oui Oui
Livraison push aux services Azure (Fonctions, Webhooks, files d’attente et rubriques Service Bus, relais de connexions hybrides et files d’attente de stockage) Oui
Rétention des messages 7 jours 1 jour
Exigence d’attribution de rôle Non nécessaire, car le MQTT broker et la rubrique d’espace de noms se trouvent sous le même espace de noms Obligatoire, car l’espace de noms hébergeant la fonctionnalité MQTT broker et la rubrique personnalisée sont des ressources différentes

Exigences de rubrique personnalisée Event Grid pour le routage

La rubrique personnalisée Event Grid utilisée pour le routage doit répondre aux exigences suivantes :

  • Elle doit être définie pour utiliser le Schéma d’événements cloud v1.0
  • Elle doit se trouver dans la même région que l’espace de noms.
  • Vous devez attribuer le rôle « Expéditeur de données Event Grid » à vous-même ou à l’identité managée sélectionnée dans la rubrique personnalisée Event Grid avant l’application de la configuration du routage.
    • Dans le portail, accédez à la ressource de rubrique Event Grid qui a été créée.
    • Dans l’élément de menu « Contrôle d’accès (IAM) », sélectionnez Ajouter une attribution de rôle.
    • Sous l’onglet « Rôle », sélectionnez « Expéditeur de données Event Grid », puis sélectionnez Suivant.
    • Dans l’onglet « Membres », sélectionnez +Sélectionner les membres, puis tapez votre nom d’utilisateur AD dans la zone « Sélectionner » qui s’affiche (par exemple, user@contoso.com).
    • Sélectionnez votre nom d’utilisateur AD, puis sélectionnez « Vérifier + attribuer »

Configuration du portail Azure

Pour configurer le routage, procédez ainsi :

  • Accédez à votre espace de noms dans le Portail Azure.
  • Sous Routage, cochez Activer le routage.
  • Sous le type de rubrique, sélectionnez Rubrique d’espace de noms ou Rubrique personnalisée
  • Sous rubrique, sélectionnez la rubrique que vous avez créée où tous les messages MQTT sont routés.
  • Si une rubrique personnalisée a été sélectionnée, la section Identité managée pour la remise s’affiche. Sélectionnez l’une des options suivantes pour l’identité utilisée pour authentifier MQTT broker lors de la remise des messages MQTT à la rubrique personnalisée :
    • Aucune : dans ce cas, vous devez vous attribuer le rôle « Expéditeur de données Event Grid » dans la rubrique personnalisée.
    • Identité affectée par le système : dans ce cas, vous devez activer l’identité affectée par le système sur l’espace de noms en tant que prérequis et affecter le rôle « Expéditeur de données Event Grid » à l’identité affectée par le système sur la rubrique personnalisée.
    • Identité affectée par l’utilisateur : dans ce cas, vous devez activer l’identité affectée par l’utilisateur sur l’espace de noms en tant que prérequis et affecter le rôle « Expéditeur de données Event Grid » à l’identité affectée par l’utilisateur sur la rubrique personnalisée.
      • Si l’identité affectée par l’utilisateur a été sélectionnée, une liste déroulante s’affiche pour vous permettre de sélectionner l’identité souhaitée.
  • Sélectionnez Appliquer.

Capture d’écran montrant la configuration du routage via le portail.

Pour obtenir des instructions de configuration pour les enrichissements, accédez à la Configuration des enrichissements du portail.

Configuration d’Azure CLI

az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json

NS.json

"properties": {
	"inputSchema": "CloudEventSchemaV1_0",
	"topicSpacesConfiguration": {
	    "state": "Enabled",           
	    "routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
        "routingIdentityInfo": {
                "type": "UserAssigned", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

Pour obtenir les instructions de configuration des enrichissements, accédez à Configuration d’enrichissement CLI.

Comportement de routage des messages MQTT

Lors du routage des messages MQTT vers des rubriques personnalisées, Event Grid fournit une livraison durable, car il tente de livrer chaque message au moins une fois immédiatement. En cas d’échec, Event Grid effectue une nouvelle tentative de livraison ou supprime le message destiné à être routé. Event Grid ne garantit pas l’ordre de livraison des événements, de sorte que les abonnés peuvent les recevoir dans le désordre.

Le tableau suivant décrit le comportement du routage des messages MQTT en fonction de différentes erreurs.

Erreur Description de l'erreur Comportement
TopicNotFoundError La rubrique personnalisée configurée pour recevoir tous les messages MQTT routés a été supprimée. Event Grid supprime le message MQTT destiné à être routé.
AuthenticationError Le rôle Expéditeur de données Event Grid pour la rubrique personnalisée configurée comme destination des messages MQTT routés a été supprimé. Event Grid supprime le message MQTT destiné à être routé.
TooManyRequests Le nombre de messages routés MQTT par seconde dépasse la limite de publication pour la rubrique personnalisée. Event Grid retente d’acheminer le message MQTT.
ServiceError Une erreur inattendue du serveur pour une raison opérationnelle. Event Grid retente d’acheminer le message MQTT.

Pendant les nouvelles tentatives, Event Grid utilise une stratégie de nouvelle tentative de backoff exponentiel pour le routage des messages MQTT. Dans la mesure du possible, Event Grid tente une nouvelle livraison selon la planification suivante :

  • 10 secondes
  • 30 secondes
  • 1 minute
  • 5 minutes
  • 10 minutes
  • 30 minutes
  • 1 heure
  • 3 heures
  • 6 heures
  • Toutes les 12 heures

Si un message MQTT routé qui a été mis en file d’attente pour une nouvelle tentative de livraison a réussi, Event Grid tente de supprimer le message de la file d’attente de nouvelles tentatives sur une base optimale, mais les doublons peuvent toujours être reçus.

Étapes suivantes :

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

Démarrage rapide :

Concepts :