Exercice : Configurer des applications pour envoyer ou recevoir des messages via un hub d’événements

Effectué

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.

  1. 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
    
  2. 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.

  3. 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
    
  4. 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.

  5. 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
    
  6. 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=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
    
  7. 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.

  1. 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.

  1. Passez au dossier SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. 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.

  3. S’il n’est pas déjà ouvert, ouvrez SimpleSend.java en le sélectionnant dans la liste de fichiers.

  4. 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.

  5. Enregistrez le fichier SimpleSend.java, puis fermez l’éditeur.

    Conseil

    Pour enregistrer vos modifications, utilisez Ctrl+S. Quittez l’éditeur en appuyant sur Ctrl+X sur Windows et Linux, ou sur Cmd+S sur macOS. Contrairement à la fenêtre de terminal Cloud Shell, l’éditeur Cloud Shell utilise les touches de raccourci clavier de copie/collage classiques correspondant à votre système d’exploitation. Vous pouvez également ouvrir le menu de l’éditeur en sélectionnant les points de suspension (...) dans le coin supérieur droit pour obtenir des commandes d’édition supplémentaires.

Utiliser Maven pour générer SimpleSend.java

Vous générez à présent l’application Java en exécutant des commandes mvn.

  1. Dans Cloud Shell, entrez la commande suivante pour accéder au dossier SimpleSend principal.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. 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.

    Build results for sender application.

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.

  1. 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
    
  2. Ouvrez l’éditeur Cloud Shell.

    code .
    
  3. Sélectionnez le fichier EventProcessorSample.java.

  4. 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.
  5. Enregistrez le fichier EventProcessorSample.java en utilisant le menu « ... » ou le raccourci clavier (Ctrl+S sur Windows et Linux, Cmd+S sur macOS).

  6. Fermez l’éditeur.

Utiliser Maven pour générer EventProcessorSample.java

  1. Passez au dossier EventProcessorSample principal en exécutant la commande suivante.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. 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.

    Build results for receiver application.

Démarrer les applications expéditrice et réceptrice

  1. 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
    
  2. 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...
    
  3. 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
    
  4. 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.