’Publier dans des rubriques d’espace de noms et consommer des événements dans Azure Event Grid
Cet article fournit une présentation rapide de la livraison par extraction à l’aide de l’interpréteur de commandes en un coup curl
pour publier, recevoir et accuser réception des événements. Les ressources Event Grid sont créées à l’aide de commandes CLI. Cet article est adapté à un test rapide de la fonctionnalité de livraison par extraction. Pour obtenir un exemple de code utilisant les kits de développement logiciel (SDK) de plan de données, consultez les exemples .NET ou Java. Pour Java, nous fournissons l’exemple de code dans deux articles : démarrages rapides de publier des événements et de recevoir des événements.
Pour plus d’informations sur le modèle de livraison par extraction, consultez les articles sur les concepts et sur la vue d’ensemble de la livraison par extraction.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Cet article nécessite la version 2.0.70 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
Créer un groupe de ressources
Créez un groupe de ressources Azure avec la commande az group create. Nous utilisons ce groupe de ressources pour contenir toutes les ressources créées dans cet article.
Les étapes générales à suivre pour utiliser Cloud Shell pour exécuter des commandes sont les suivantes :
- Cliquez sur Ouvrir Cloud Shell pour afficher une fenêtre Azure Cloud Shell dans le volet droit.
- Copiez et collez la commande dans la fenêtre Cloud Shell.
- Appuyez sur Entrée pour exécuter la commande.
Déclarez une variable pour contenir le nom d'un groupe de ressources Azure. Spécifiez un nom pour le groupe de ressources en le remplaçant
<your-resource-group-name>
par une valeur de votre choix.resource_group="<your-resource-group-name>"
Créez un groupe de ressources. Modifiez l’emplacement comme vous le souhaitez.
az group create --name $resource_group --location eastus
Activer le fournisseur de ressources Event Grid
Si vous n’avez jamais utilisé Event Grid dans votre abonnement Azure, vous risquez de devoir inscrire le fournisseur de ressources Event Grid. Exécutez la commande suivante pour enregistrer le fournisseur :
az provider register --namespace Microsoft.EventGrid
L’inscription peut prendre un certain temps. Pour vérifier l'état, exécutez la commande suivante :
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Lorsque
registrationState
estRegistered
, vous êtes prêt à continuer.
Créer un espace de noms
Un espace de noms Event Grid fournit un point de terminaison défini par l’utilisateur sur lequel vous publiez vos événements. L’exemple suivant crée un espace de noms dans votre groupe de ressources à l’aide de Bash dans Azure Cloud Shell. Le nom de l’espace de noms doit être unique, car il fait partie d’une entrée DNS. Un nom d’espace de noms doit respecter les règles suivantes :
- Il doit contenir entre 3 et 50 caractères.
- Il doit être unique au niveau régional.
- Seuls les caractères autorisés sont a-z, A-Z, 0-9 et -
- Il ne doit pas commencer par des préfixes de mots clés réservés comme
Microsoft
,System
ouEventGrid
.
Déclarez une variable pour contenir le nom de votre espace de noms Event Grid. Spécifiez un nom pour l'espace de noms en le remplaçant
<your-namespace-name>
par une valeur que vous aimez.namespace="<your-namespace-name>"
Créez un espace de noms. Vous souhaiterez peut-être modifier l’emplacement où il est déployé.
az eventgrid namespace create -g $resource_group -n $namespace -l eastus
Créez une rubrique d’espace de noms
Créez une rubrique utilisée pour contenir tous les événements publiés sur le point de terminaison de l'espace de noms.
Déclarez une variable pour contenir le nom de votre sujet d'espace de noms. Spécifiez un nom pour le sujet de l'espace de noms en le remplaçant
<your-topic-name>
par une valeur que vous aimez.topic="<your-topic-name>"
Créez votre rubrique d’espace de noms :
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Créer un abonnement d’événement
Créez un abonnement aux événements en définissant son mode de remise sur file d’attente, ce qui prend en charge la transmission de type pull. Pour plus d’informations sur toutes les options de configuration, reportez-vous à la dernière API REST du plan de contrôle Event Grid.
Déclarez une variable pour contenir le nom d'un abonnement à un événement dans votre sujet d'espace de noms. Spécifiez un nom pour l'abonnement à l'événement en le remplaçant
<your-event-subscription-name>
par une valeur de votre choix.event_subscription="<your-event-subscription-name>"
Créez un abonnement à l'événement pour le sujet de l'espace de noms :
az eventgrid namespace topic event-subscription create -g $resource_group --topic-name $topic -n $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
Envoyer des événements à la rubrique
Maintenant, envoyez un exemple d'événement au sujet de l'espace de noms en suivant les étapes de cette section.
Répertorier les clés d’accès à l’espace de noms
Obtenez les clés d'accès associées à l'espace de noms que vous avez créé. Vous utilisez l’une d’entre elles pour vous authentifier lors de la publication d’événements. Pour répertorier vos clés, vous avez d'abord besoin de l'ID de ressource d'espace de noms complet. Obtenez-le en exécutant la commande suivante :
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Obtenez la première clé de l’espace de noms :
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Publier un événement
Récupérez le nom d’hôte de l’espace de noms. Vous l’utilisez pour composer le point de terminaison HTTP de l’espace de noms auquel les événements sont envoyés. Les opérations suivantes ont d’abord été disponibles dans la version
2023-06-01-preview
de l’API.publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
Créez un exemple d'événement conforme à CloudEvents :
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
L’élément
data
est la charge utile de votre événement. N’importe quel fichier JSON bien construit peut être placé dans ce champ. Consultez les spécifications CloudEvents pour plus d’informations sur les propriétés (également appelées attributs de contexte) qui peuvent être activées dans un événement.Utilisez CURL pour envoyer l'événement au sujet. CURL est un utilitaire qui envoie des requêtes HTTP.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Recevez l'événement
Vous recevez des événements d’Event Grid à l’aide d’un point de terminaison qui fait référence à un abonnement aux événements.
Composez ce point de terminaison en exécutant la commande suivante :
receive_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
Envoyez une demande pour consommer l’événement :
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
Reconnaître un événement
Après avoir reçu un événement, vous transmettez cet événement à votre application pour traitement. Une fois que vous avez correctement traité votre événement, vous n’avez plus besoin que cet événement se trouve dans votre abonnement aux événements. Pour demander à Event Grid de supprimer l’événement, vous le reconnaissez en utilisant son jeton de verrou que vous avez obtenu sur la réponse de l’opération de réception.
À l’étape précédente, vous devez avoir reçu une réponse qui inclut un objet
brokerProperties
avec une propriétélockToken
. Copiez la valeur du jeton de verrou et définissez-la sur une variable d’environnement :lockToken="<paste-the-lock-token-here>"
À présent, générez la charge utile de l’opération de reconnaissance, qui spécifie le jeton de verrou pour l’événement que vous souhaitez reconnaître.
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
Poursuivez la génération de la chaîne avec l’URI de l’opération de reconnaissance :
acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-preview
Enfin, envoyez une demande pour reconnaître l’événement :
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
Si l’opération d’acquittement est exécutée avant l’expiration du jeton de verrouillage (300 secondes définies lors de la création de l’abonnement aux événements), vous devriez voir une réponse semblable à la suivante :
{"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
Étapes suivantes
Pour en savoir plus sur le modèle de livraison pull, voir Vue d'ensemble de la livraison pull.