Übung: Konfigurieren von Anwendungen zum Senden oder Empfangen von Nachrichten über einen Event Hub

Abgeschlossen

Sie können nun Ihre Herausgeber- und Consumeranwendungen für Ihren Event Hub konfigurieren.

In dieser Lerneinheit konfigurieren Sie Anwendungen zum Senden oder Empfangen von Nachrichten über Ihren Event Hub. Eine Anwendung fungiert als Nachrichtensender (SimpleSend), die andere als Nachrichtenempfänger (EventProcessorSample). Da diese Anwendungen in Java geschrieben sind, können Sie das Entwickeln, Testen und Verwalten in Ihrem Browser vornehmen. Allerdings muss für jede Plattform, z. B. .NET, die gleiche Konfiguration verwendet werden. Diese Anwendungen werden in einem GitHub-Repository gespeichert.

Erstellen eines allgemeinen Standardspeicherkontos

Die Java-Empfängeranwendung speichert Nachrichten in Azure Blob Storage, für den ein Speicherkonto erforderlich ist. Verwenden Sie den Befehl storage account create, um ein Speicherkonto (Universell V2) zu erstellen. Sie definieren die folgenden Parameter für diesen Befehl:

Parameter BESCHREIBUNG
Name (erforderlich) Ein Name für Ihr Speicherkonto.
ressource group (erforderlich) Der bzw. die Besitzer*in der Ressourcengruppe ist die Sandbox-Ressourcengruppe, die bereits als Standardwert definiert wurde.
location (optional) Die Region wurde bereits als Standardwert definiert. Sie können diesen Parameter jedoch einschließen, wenn Sie eine andere Region als den standardmäßigen Standort der Ressourcengruppe festlegen möchten.
sku Der Standard-SKU-Wert des Speicherkontos lautet Standard_RAGRS. Aber in dieser Übung geben wir diesen Wert an.

In der vorherigen Übungen haben Sie Standardwerte für Ressourcengruppen und Standorte definiert, sodass wir diese Parameter aus dem Befehl weglassen können.

  1. Legen Sie den Namen des Speicherkontos in Azure Cloud Shell auf eine Variable fest. Der Name eines Speicherkontos muss innerhalb von Azure eindeutig sein und 3 bis 24 Zahlen oder Kleinbuchstaben enthalten.

    STORAGE_NAME=storagename$RANDOM
    
  2. Führen Sie den folgenden Befehl aus, um das Speicherkonto zu erstellen.

    az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
    

    Tipp

    Die Erstellung dieses Speicherkontos kann einen Moment dauern. Wenn das Erstellen des Speicherkontos fehlschlägt, ändern Sie Ihre Umgebungsvariable, und versuchen Sie es noch mal.

  3. Führen Sie den folgenden Befehl aus, um die Zugriffsschlüssel zu erhalten, die Ihrem Speicherkonto zugeordnet sind.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Zwei Ihrem Speicherkonto zugeordnete Schlüssel werden im JSON-Format ausgegeben. Kopieren und speichern Sie den Wert von key1 (Schlüssel 1), um ihn in Zukunft verwenden zu können. Sie benötigen diesen Schlüssel für den Zugriff auf Ihr Speicherkonto.

  5. Führen Sie den folgenden Befehl aus, um die Verbindungszeichenfolge für Ihr Speicherkonto zu erhalten.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. Die Ausgabe enthält die Verbindungsdetails für Ihr Speicherkonto. Kopieren und speichern Sie den Wert von connectionString. Der Bericht könnte beispielsweise wie folgt aussehen:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=xxxxxxxxxxx"
    
  7. Führen Sie den folgenden Befehl aus, um einen Container mit dem Namen messages (Nachrichten) in Ihrem Speicherkonto zu erstellen. Verwenden Sie den Wert connectionString (Verbindungszeichenfolge), den Sie im vorherigen Schritt kopiert haben.

    az storage container create --name messages --connection-string "<connection string here>"
    

Klonen des GitHub-Repositorys „Event Hubs“

Klonen Sie das GitHub-Repository „Event Hubs“ in Cloud Shell mit git. Die Quelldateien für die Anwendungen, die Sie in dieser Lerneinheit erstellen, befinden sich in einem GitHub-Repository.

  1. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Sie sich in Cloud Shell in Ihrem Basisverzeichnis befinden, und klonen Sie dann das Repository.

    cd ~
    git clone https://github.com/Azure/azure-event-hubs.git
    

Das Repository wird in Ihren Basisordner geklont.

Bearbeiten von „SimpleSend.java“

In dieser Übung verwenden Sie den integrierten Cloud Shell-Editor, um die SimpleSend-Anwendung zu ändern. Sie müssen Ihren Event Hubs-Namespace, den Event Hub-Namen, den Namen der Richtlinie für den gemeinsamen Zugriff und den Primärschlüssel hinzufügen.

  1. Navigieren Sie zum Ordner SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Öffnen Sie den Cloud Shell-Editor im aktuellen Ordner.

    code .
    

    Die Dateien im aktuellen Ordner werden im linken Menü aufgeführt. Im Editorbereich auf der rechten Seite wird der Inhalt des Dateinamens angezeigt, der in der Titelleiste aufgeführt ist.

  3. Öffnen Sie die Datei SimpleSend.java, wenn sie nicht bereits geöffnet ist indem Sie sie in der Dateiliste auswählen.

  4. Suchen Sie im Editor die folgenden Zeichenfolgen unter „ConnectionStringBuilder“, und ersetzen Sie sie:

    • "Your Event Hubs namespace name" durch den Namen Ihres Event Hubs-Namespace.
    • "Your Event Hub" durch den Namen Ihres Event Hubs.
    • "Your policy name" durch RootManageSharedAccessKey.
    • "Your primary SAS key" durch den Wert des Schlüssels primaryKey für Ihren Event Hubs-Namespace, den Sie zuvor gespeichert haben.

    Wenn Sie diese Werte vergessen, können Sie zum Terminalfenster unterhalb des Editors wechseln und den Befehl echo ausführen, um die Umgebungsvariablen aufzulisten. Beispiel:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    Wenn Sie einen Event Hubs-Namespace erstellen, wird für Ihren SAS-Primärschlüssel ein 256-Bit-SAS-Schlüssel mit dem Namen RootManageSharedAccessKey erstellt. Dieser enthält Primärschlüssel und sekundäre Schlüssel, die Sende-, Lausch- und Verwaltungsrechte für den Namespace gewähren. Weiter oben in dieser Übung haben Sie den Schlüssel erhalten, indem Sie einen Azure CLI-Befehl ausgeführt haben. Sie können die Schlüssel und Verbindungszeichenfolgen jedoch auch finden, indem Sie Ihren Event Hubs-Namespace im Azure-Portal und dann im Menü unter Einstellungen die Option Freigegebene Zugriffsrichtlinien auswählen. Wählen Sie nun den Richtliniennamen RootManageSharedAccessKey aus, um die SAS-Richtlinienschlüssel anzuzeigen.

  5. Speichern Sie die Datei SimpleSend.java, und schließen Sie dann den Editor. Wählen Sie in der oberen rechten Ecke des Editors aus, und verwenden Sie die Speichern und Editor schließen Menüelemente.

    Screenshot mit Menüelementen zum Speichern der Datei und Schließen des Editors.

Verwenden von Maven zum Erstellen von „SimpleSend.java“

Nun erstellen Sie die Java-Anwendung, indem Sie mvn-Befehle ausführen.

  1. Geben Sie in Cloud Shell den folgenden Befehl ein, um zum Hauptordner SimpleSend zu navigieren.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. Führen Sie den Buildvorgang für die Java-Anwendung SimpleSend durch. Dieser Befehl erstellt Ihre Anwendung mithilfe der Verbindungsdetails für Ihren Event Hub.

    mvn clean package -DskipTests
    

    Der Buildprozess kann mehrere Minuten dauern. Stellen Sie sicher, dass die Meldung [INFO] BUILD SUCCESS angezeigt wird, ehe Sie fortfahren.

    Buildergebnisse für Absenderanwendung

Bearbeiten von „EventProcessorSample.java“

Sie konfigurieren nun eine Empfängeranwendung (auch bezeichnet als Abonnenten- oder Consumeranwendung), um Daten von Ihrem Event Hub zu erfassen.

Für die Empfängeranwendung stehen zwei Klassen zur Verfügung: EventHubReceiver und EventProcessorHost. EventProcessorHost setzt auf EventHubReceiver auf, bietet aber eine einfachere Programmierschnittstelle als EventHubReceiver. EventProcessorHost kann Nachrichtenpartitionen unter Verwendung desselben Speicherkontos automatisch auf mehrere Instanzen von EventProcessorHost verteilen.

In diesem Verfahren verwenden Sie die EventProcessorHost-Methode. Bearbeiten Sie die Anwendung „EventProcessorSample“, um die folgenden Werte hinzuzufügen: Ihren Event Hubs-Namespace, den Event Hubs-Namen und den Namen der Richtlinie für den gemeinsamen Zugriff sowie den Primärschlüssel, den Namen des Speicherkontos, die Verbindungszeichenfolge und den Containernamen.

  1. Führen Sie den folgenden Befehl aus, um zum Ordner EventProcessorSample zu wechseln.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Öffnen Sie den Cloud Shell-Editor.

    code .
    
  3. Wählen Sie im Datei-Explorer links die Datei EventProcessorSample.java aus.

  4. Suchen und ersetzen Sie im Editor die folgenden Zeichenfolgen:

    • ----EventHubNamespaceName---- durch den Namen Ihres Event Hubs-Namespace.
    • ----EventHubName---- durch den Namen Ihres Event Hubs.
    • ----SharedAccessSignatureKeyName---- durch RootManageSharedAccessKey.
    • ----SharedAccessSignatureKey---- durch den Wert des Schlüssels primaryKey für Ihren Event Hubs-Namespace, den Sie zuvor gespeichert haben.
    • ----AzureStorageConnectionString---- durch die Verbindungszeichenfolge des Speicherkontos, die Sie zuvor gespeichert haben.
    • ----StorageContainerName---- durch messages.
    • ----HostNamePrefix---- durch den Namen Ihres Speicherkontos.

    Wenn Sie diese Werte vergessen, können Sie zum Terminalfenster unterhalb des Editors wechseln und den Befehl echo ausführen, um die Umgebungsvariablen aufzulisten. Zum Beispiel:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    
  5. Speichern Sie EventProcessorSample.java entweder über das „...“-Menü oder über die entsprechende Tastenkombination (STRG+S unter Windows und Linux oder BEFEHLSTASTE+S unter macOS).

  6. Schließen Sie den Editor.

Verwenden von Maven zum Durchführen des Buildvorgangs für „EventProcessorSample.java“

  1. Führen Sie den folgenden Befehl aus, um zum Hauptordner EventProcessorSample zu wechseln.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. Erstellen Sie die „SimpleSend“-Anwendung für Java, indem Sie den folgenden Befehl ausführen, um sicherzustellen, dass Ihre Anwendung die Verbindungsdetails für Ihren Event Hub verwendet.

    mvn clean package -DskipTests
    

    Der Buildprozess kann mehrere Minuten dauern. Stellen Sie sicher, dass die Meldung [INFO] BUILD SUCCESS angezeigt wird, bevor Sie fortfahren.

    Buildergebnisse für Empfängeranwendung

Starten der Absender- und Empfänger-App

  1. Führen Sie die Java-Anwendung über die Befehlszeile aus, indem Sie den Befehl java ausführen und ein JAR-Paket angeben. Führen Sie die folgenden Befehle aus, um die Anwendung „SimpleSend“ zu starten.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Drücken Sie die EINGABETASTE, wenn Send Complete... (Sendevorgang abgeschlossen...) angezeigt wird.

    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. Starten Sie die „EventProcessorSample“-Anwendung, indem Sie den folgenden Befehl ausführen.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. Wenn in der Konsole keine Meldungen mehr angezeigt werden, drücken Sie die EINGABETASTE oder STRG+C, um das Programm zu beenden.

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

Zusammenfassung

In dieser Lerneinheit haben Sie eine Absenderanwendung konfiguriert, die zum Senden von Nachrichten an Ihren Event Hub bereit ist. Sie haben außerdem eine Empfängeranwendung konfiguriert, die zum Empfangen von Nachrichten von Ihrem Event Hub bereit ist.