Partager via


Tutoriel : utiliser des rubriques d’espace de noms pour acheminer des messages MQTT vers Azure Event Hubs (Azure CLI)

Dans ce tutoriel, vous allez apprendre à utiliser une rubrique d’espace de noms pour acheminer les données de clients MQTT vers Azure Event Hubs. Les étapes principales sont les suivantes :

Prérequis

  • Si vous n’en avez pas, créez un compte gratuit Azure avant de commencer.
  • Si vous débutez avec Event Grid, lisez la Vue d’ensemble d’Event Grid avant de commencer ce tutoriel.
  • Inscrivez le fournisseur de ressources Event Grid en suivant les étapes décrites dans Inscrire le fournisseur de ressources Event Grid.
  • Vérifiez que le port 8883 est ouvert dans votre pare-feu. L’exemple dans ce tutoriel utilise le protocole MQTT, lequel communique sur le port 8883. Ce port pourrait être bloqué dans certains environnements réseau professionnels et scolaires.

Lancer Cloud Shell

  1. Connectez-vous au portail Azure.

  2. Sélectionnez le lien pour lancer Cloud Shell.

  3. Basculez vers Bash.

    Capture d’écran montrant la barre le Portail Microsoft Azure avec l’option Cloud Shell ouverte et Bash sélectionné.

Créer un espace de noms Event Grid et une rubrique

Pour créer un espace de noms Event Grid et une rubrique dans l’espace de noms, copiez le script suivant dans un éditeur, remplacez les espaces réservés par des valeurs réelles et exécutez les commandes.

Paramètre substituable Commentaires
RESOURCEGROUPNAME Indiquez un nom pour le groupe de ressources à créer.
EVENTGRIDNAMESPACENAME Indiquez le nom de l’espace de noms Event Grid.
REGION Indiquez l’emplacement dans lequel vous souhaitez créer les ressources.
NAMESPACETOPICNAME Indiquez un nom pour la rubrique d’espace de noms.
rgName="RESOURCEGROUPNAME"
nsName="EVENTGRIDNAMESPACENAME"
location="REGION"
nsTopicName="NAMESPACETOPICNAME"

az group create -n $rgName -l $location
az eventgrid namespace create -g $rgName -n $nsName -l $location --topic-spaces-configuration "{state:Enabled}" --identity "{type:SystemAssigned}"
az eventgrid namespace topic create -g $rgName --name $nsTopicName --namespace-name $nsName

Création d’un espace de noms Event Hubs et d’un concentrateur d’événements

Pour créer un espace de noms Event Hubs et un hub d’événements dans l’espace de noms, remplacez les espaces réservés par des valeurs réelles et exécutez les commandes suivantes. Ce hub d’événements est utilisé comme gestionnaire d’événements dans l’abonnement aux événements que vous créez dans ce tutoriel.

Paramètre substituable Commentaires
EVENTHUBSNAMESPACENAME Indiquez un nom pour l’espace de noms Event Hubs à créer.
EVENTHUBNAME Indiquez le nom de l’instance Event Hubs (hub d’événements) à créer dans l’espace de noms Event Hubs.
ehubNsName="EVENTHUBSNAMESPACENAME`"
ehubName="EVENTHUBNAME"

az eventhubs namespace create --resource-group $rgName --name $ehubNsName
az eventhubs eventhub create --resource-group $rgName --namespace-name $ehubNsName --name $ehubName

Autoriser l’espace de noms Event Grid à envoyer des événements au hub d’événements

Exécutez la commande suivante pour ajouter le principal de service de l’espace de noms Event Grid au rôle Expéditeur de données Azure Event Hubs sur l’espace de noms Event Hubs. De cette façon, l’espace de noms Event Grid et les ressources qu’il contient peuvent envoyer des événements au hub d’événements dans l’espace de noms Event Hubs.

egNamespaceServicePrincipalObjectID=$(az ad sp list --display-name $nsName --query [].id -o tsv)
namespaceresourceid=$(az eventhubs namespace show -n $ehubNsName -g $rgName --query "{I:id}" -o tsv) 

az role assignment create --assignee $egNamespaceServicePrincipalObjectID --role "Azure Event Hubs Data Sender" --scope $namespaceresourceid

Créer un abonnement aux événements avec Event Hubs comme point de terminaison

Pour créer un abonnement aux événements pour la rubrique d’espace de noms créée précédemment, remplacez les espaces réservés par des valeurs réelles et exécutez les commandes suivantes. Cet abonnement est configuré pour utiliser le hub d’événements comme gestionnaire d’événements.

Paramètre substituable Commentaires
EVENTSUBSCRIPTIONNAME Indiquez un nom pour l’abonnement aux événements pour la rubrique d’espace de noms.
eventSubscriptionName="EVENTSUBSCRIPTIONNAME"
eventhubresourceid=$(az eventhubs eventhub show -n $ehubName --namespace-name $ehubNsName -g $rgName --query "{I:id}" -o tsv) 

az resource create --api-version 2023-06-01-preview --resource-group $rgName --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $eventSubscriptionName --parent namespaces/$nsName/topics/$nsTopicName --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventhubresourceid\"}}}}}}"

Configurer le routage dans l’espace de noms Event Grid

Exécutez les commandes suivantes pour activer le routage sur l’espace de noms afin d’acheminer les messages ou les événements vers la rubrique d’espace de noms créée précédemment. L’abonnement aux événements sur cette rubrique d’espace de noms transfère ces événements au hub d’événements configuré en tant que gestionnaire d’événements.

routeTopicResourceId=$(az eventgrid namespace topic show -g $rgName --namespace-name $nsName -n $nsTopicName --query "{I:id}" -o tsv) 
az eventgrid namespace create -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled,'routeTopicResourceId':$routeTopicResourceId}"

Créer un client, un espace de rubrique et des liaisons d’autorisation

Créez à présent un client pour envoyer quelques messages à des fins de test. Dans cette étape, vous créez un client, un espace de rubrique avec une rubrique ainsi que des liaisons d’éditeur et d’abonné.

Pour obtenir des instructions détaillées, consultez Démarrage rapide : publier des messages MQTT sur un espace de noms Event Grid et s’y abonner avec Azure CLI.

Paramètre substituable Commentaires
CLIENTNAME Indiquez un nom pour le client qui envoie quelques messages de test.
CERTIFICATETHUMBPRINT Empreinte du certificat du client. Consultez le guide de démarrage rapide ci-dessus pour obtenir des instructions sur la création d’un certificat et l’extraction d’une empreinte. Utilisez la même empreinte dans l’outil MQTTX pour envoyer des messages de test.
TOPICSPACENAME Indiquez un nom pour l’espace de rubrique à créer.
PUBLSHERBINDINGNAME Indiquez un nom pour la liaison d’éditeur.
SUBSCRIBERBINDINGNAME Indiquez un nom pour la liaison d’abonné.
clientName="CLIENTNAME"
clientAuthName="client1-authnID" 
clientThumbprint="CERTIFICATETHUMBPRINT"

topicSpaceName="TOPICSPACENAME"
publisherBindingName="PUBLSHERBINDINGNAME"
subscriberBindingName="SUBSCRIBERBINDINGNAME"

az eventgrid namespace client create -g $rgName --namespace-name $nsName -n $clientName --authentication-name $clientAuthName --client-certificate-authentication "{validationScheme:ThumbprintMatch,allowed-thumbprints:[$clientThumbprint]}"

az eventgrid namespace topic-space create -g $rgName --namespace-name $nsName -n $topicSpaceName --topic-templates ['contosotopics/topic1']

az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $publisherBindingName --client-group-name '$all' --permission publisher --topic-space-name $topicSpaceName

az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $subscriberBindingName --client-group-name '$all' --permission subscriber --topic-space-name $topicSpaceName

Envoyer des messages avec MQTTX

Utilisez MQTTX pour envoyer quelques messages de test. Pour obtenir des instructions pas à pas, consultez le guide de démarrage rapide Publier une rubrique MQTT et s’y abonner.

Vérifiez que le hub d’événements a reçu ces messages dans la page Vue d’ensemble de votre espace de noms Event Hubs.

Capture d’écran montrant la page de présentation du hub d’événements avec le décompte des messages entrants.

Afficher les messages MQTT acheminés dans Event Hubs à l’aide d’une requête Stream Analytics

Accédez à l’instance Event Hubs (Event Hub) dans votre abonnement aux événements dans le Portail Azure. Traitez les données de votre Event Hub avec Stream Analytics. Pour obtenir plus d’informations, consultez Traiter des données d’Azure Event Hubs avec Stream Analytics – Azure Event Hubs | Microsoft Learn. Vous pouvez voir les messages MQTT dans la requête.

Capture d’écran montrant les données des messages MQTT dans Event Hubs à l’aide de l’outil de requête Stream Analytics.

Étapes suivantes

Si vous souhaitez obtenir des exemples de code, accédez à ce référentiel GitHub.