Exercice : Configurer des applications pour envoyer ou recevoir des messages via un hub d’événements
Vous êtes maintenant prêt à configurer vos applications de publieur et de consommateur pour votre Event Hub.
Dans cette unité, vous configurez des applications pour qu’elles envoient ou reçoivent des messages par le biais de votre Event Hub. Une application assume la fonction d’expéditeur de message (SimpleSend), l’autre de récepteur de message (EventProcessorSample). Étant donné que ces applications sont écrites en Java, vous pouvez effectuer tout le développement, les tests et la gestion dans votre navigateur. Toutefois, la même configuration doit être utilisée pour chaque plateforme, telle que .NET. Les applications sont stockées dans un dépôt GitHub.
Créer un compte de stockage standard universel
L’application réceptrice Java stocke les messages dans le Stockage Blob Azure, ce qui nécessite un compte de stockage. Pour créer un compte de stockage (universel V2), utilisez la commande storage account create
. Nous définissons les paramètres suivants pour cette commande :
Paramètre | Description |
---|---|
name (obligatoire) | Nom de votre compte de stockage. |
resource-group (obligatoire) | Le propriétaire du groupe de ressources est le groupe de ressources du bac à sable (sandbox), qui est déjà défini comme valeur par défaut. |
location (facultatif) | La région est déjà définie comme valeur par défaut, mais vous pouvez l’inclure si vous souhaitez définir une région différente de l’emplacement du groupe de ressources par défaut. |
sku | La valeur de référence SKU par défaut du compte de stockage est Standard_RAGRS. Toutefois, dans cet exercice, nous spécifions cette valeur. |
Dans l’exercice précédent, nous avons défini des valeurs par défaut pour le groupe de ressources et la localisation. Nous pouvons donc omettre ces paramètres dans la commande.
Dans Azure Cloud Shell, définissez le nom du compte de stockage sur une variable. Un nom de compte de stockage doit être unique dans Azure et doit contenir entre 3 et 24 chiffres ou lettres en minuscules.
STORAGE_NAME=storagename$RANDOM
Exécutez la commande suivante pour créer le compte de stockage.
az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
Conseil
La création de ce compte de stockage peut prendre un certain temps. Si la création du compte de stockage échoue, changez votre variable d’environnement et réessayez.
Exécutez la commande suivante pour obtenir les clés d’accès associées à votre compte de stockage.
az storage account keys list --account-name $STORAGE_NAME
Deux clés associées à votre compte de stockage sont générées au format JSON. Copiez et enregistrez la valeur de key1 pour une utilisation ultérieure. Vous avez besoin de cette clé pour accéder à votre compte de stockage.
Exécutez la commande suivante pour obtenir la chaîne de connexion de votre compte de stockage.
az storage account show-connection-string -n $STORAGE_NAME
La sortie contient les détails de connexion de votre compte de stockage. Copiez et enregistrez la valeur de connectionString. Il doit se présenter comme suit :
"DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=xxxxxxxxxxx"
Exécutez la commande suivante pour créer un conteneur nommé messages dans votre compte de stockage. Utilisez la valeur connectionString copiée à l’étape précédente.
az storage container create --name messages --connection-string "<connection string here>"
Cloner le dépôt GitHub Event Hubs
Dans Cloud Shell, clonez le dépôt GitHub Event Hubs avec git
. Les fichiers sources des applications que vous créez dans cette unité se trouvent dans un référentiel GitHub.
Exécutez les commandes suivantes pour vérifier que vous vous trouvez bien dans votre répertoire de base dans Cloud Shell, puis pour cloner ce dépôt.
cd ~ git clone https://github.com/Azure/azure-event-hubs.git
Le dépôt est cloné dans votre dossier de base.
Modifier SimpleSend.java
Dans cet exercice, vous utilisez l’éditeur Cloud Shell intégré pour modifier l’application SimpleSend. Vous devez ajouter votre espace de noms Event Hubs, le nom de l’Event Hub, le nom de la stratégie d’accès partagé et la clé primaire.
Passez au dossier SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
Ouvrez l’éditeur Cloud Shell dans le dossier actif.
code .
Les fichiers du dossier actif sont répertoriés dans le menu de gauche, tandis que l’espace de l’éditeur à droite affiche le contenu du nom de fichier affiché dans la barre de titre.
S’il n’est pas déjà ouvert, ouvrez SimpleSend.java en le sélectionnant dans la liste de fichiers.
Dans l’éditeur, recherchez et remplacez les chaînes suivantes sous « ConnectionStringBuilder » :
"Your Event Hubs namespace name"
par le nom de votre espace de noms Event Hubs."Your Event Hub"
par le nom de votre hub d’événements."Your policy name"
par RootManageSharedAccessKey."Your primary SAS key"
par la valeur de la clé primaryKey de votre espace de noms Event Hubs enregistrée précédemment.
Si vous avez oublié ces valeurs, vous pouvez basculer vers la fenêtre de terminal en dessous de l’éditeur et exécuter la commande
echo
pour afficher la liste des variables d’environnement. Par exemple :echo $NS_NAME echo $HUB_NAME echo $STORAGE_NAME
Pour votre clé SAS primaire, quand vous créez un espace de noms Event Hubs, une clé SAS de 256 bits nommée RootManageSharedAccessKey est créée. Elle inclut des clés primaire/secondaire qui accordent des droits d’envoi, d’écoute et de gestion à l’espace de noms. Précédemment dans cet exercice, vous avez obtenu la clé en exécutant une commande Azure CLI. Toutefois, vous pouvez également rechercher les clés et les chaînes de connexion en sélectionnant votre espace de noms Event Hubs dans le portail Azure. Ensuite, dans le menu sous Paramètres, sélectionnez Stratégies d’accès partagé. Sélectionnez alors le nom de stratégie RootManageSharedAccessKey pour afficher les clés de stratégie SAS.
Enregistrez le fichier SimpleSend.java, puis fermez l’éditeur. Dans le coin supérieur droit de l’éditeur, utilisez les éléments de menu Enregistrer et Fermer l’éditeur.
Utiliser Maven pour générer SimpleSend.java
Vous générez à présent l’application Java en exécutant des commandes mvn.
Dans Cloud Shell, entrez la commande suivante pour accéder au dossier SimpleSend principal.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
Générez l’application Java SimpleSend. Cette commande génère votre application avec les informations de connexion de votre hub d’événements.
mvn clean package -DskipTests
Le processus de génération peut prendre plusieurs minutes. Vérifiez que le message [INFO] BUILD SUCCESS s’affiche avant de continuer.
Modifier EventProcessorSample.java
Vous configurez à présent une application réceptrice (aussi appelée abonné ou consommateur) pour qu’elle ingère les données en provenance de votre Event Hub.
Pour l’application réceptrice, deux classes sont disponibles : EventHubReceiver et EventProcessorHost. EventProcessorHost repose sur EventHubReceiver, mais il fournit une interface de programmation plus simple que EventHubReceiver. EventProcessorHost peut distribuer automatiquement les partitions de message sur plusieurs instances d’EventProcessorHost à l’aide du même compte de stockage.
Dans cette procédure, vous utilisez la méthode EventProcessorHost
. Vous modifiez l’application EventProcessorSample pour ajouter les valeurs suivantes : votre espace de noms Event Hubs, le nom de l’Event Hub, le nom de la stratégie d’accès partagé et la clé primaire, le nom du compte de stockage, la chaîne de connexion et le nom du conteneur.
Passez au dossier EventProcessorSample en exécutant la commande suivante.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
Ouvrez l’éditeur Cloud Shell.
code .
Sélectionnez le fichier EventProcessorSample.java dans l’Explorateur de fichiers à gauche.
Recherchez et remplacez les chaînes suivantes dans l’éditeur :
----EventHubNamespaceName----
par le nom de votre espace de noms Event Hubs.----EventHubName----
par le nom de votre hub d’événements.----SharedAccessSignatureKeyName----
par RootManageSharedAccessKey.----SharedAccessSignatureKey----
par la valeur de la clé primaryKey de votre espace de noms Event Hubs enregistrée précédemment.----AzureStorageConnectionString----
par la chaîne de connexion de compte de stockage que vous avez enregistrée précédemment.----StorageContainerName----
par messages.----HostNamePrefix----
par le nom de votre compte de stockage.
Si vous avez oublié ces valeurs, vous pouvez basculer vers la fenêtre de terminal en dessous de l’éditeur et exécuter la commande
echo
pour afficher la liste des variables d’environnement. Par exemple :echo $NS_NAME echo $HUB_NAME echo $STORAGE_NAME
Enregistrez le fichier EventProcessorSample.java en utilisant le menu « ... » ou le raccourci clavier (Ctrl+S sur Windows et Linux, Cmd+S sur macOS).
Fermez l’éditeur.
Utiliser Maven pour générer EventProcessorSample.java
Passez au dossier EventProcessorSample principal en exécutant la commande suivante.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
Générez l’application Java SimpleSend en exécutant la commande suivante pour vous assurer que votre application utilise les informations de connexion de votre hub d’événements.
mvn clean package -DskipTests
Le processus de génération peut prendre plusieurs minutes. Vérifiez qu’un message [INFO] BUILD SUCCESS s’affiche avant de continuer.
Démarrer les applications expéditrice et réceptrice
Exécutez l’application Java à partir de la ligne de commande en exécutant la commande
java
suivante et en spécifiant un package .jar. Exécutez les commandes suivantes pour démarrer l’application SimpleSend.cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
Quand vous voyez Send Complete..., appuyez sur Entrée.
jar-with-dependencies.jar SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 2018-09-18T19:42:15.146Z: Send Complete...
Démarrez l’application EventProcessorSample en exécutant la commande suivante.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
Quand des messages cessent d’apparaître sur la console, appuyez sur Entrée ou sur Ctrl+C pour mettre fin au programme.
... SAMPLE: Partition 0 checkpointing at 1064,19 SAMPLE (3,1120,20): "Message 80" SAMPLE (3,1176,21): "Message 84" SAMPLE (3,1232,22): "Message 88" SAMPLE (3,1288,23): "Message 92" SAMPLE (3,1344,24): "Message 96" SAMPLE: Partition 3 checkpointing at 1344,24 SAMPLE (2,1120,20): "Message 83" SAMPLE (2,1176,21): "Message 87" SAMPLE (2,1232,22): "Message 91" SAMPLE (2,1288,23): "Message 95" SAMPLE (2,1344,24): "Message 99" SAMPLE: Partition 2 checkpointing at 1344,24 SAMPLE: Partition 1 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE (0,1120,20): "Message 81" SAMPLE (0,1176,21): "Message 85" SAMPLE: Partition 0 batch size was 10 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE: Partition 0 got event batch SAMPLE (0,1232,22): "Message 89" SAMPLE (0,1288,23): "Message 93" SAMPLE (0,1344,24): "Message 97" SAMPLE: Partition 0 checkpointing at 1344,24 SAMPLE: Partition 3 batch size was 8 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE: Partition 2 batch size was 9 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE: Partition 0 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
Résumé
Dans cette unité, vous avez configuré une application expéditrice prête à envoyer des messages à votre Event Hub. Vous avez aussi configuré une application réceptrice prête à recevoir des messages en provenance de votre Event Hub.