Oefening: toepassingen configureren voor het verzenden of ontvangen van berichten via een Event Hub

Voltooid

U kunt nu de uitgever- en consumententoepassingen voor uw Event Hub configureren.

In deze les configureert u toepassingen voor het verzenden of ontvangen van berichten via uw Event Hub. De ene toepassing fungeert als de afzender van het bericht (SimpleSend), de andere als de ontvanger van het bericht (EventProcessorSample). Omdat deze toepassingen zijn geschreven in Java, kunt u alle ontwikkel-, test- en beheertaken uitvoeren in uw browser. Dezelfde configuratie moet echter worden gebruikt voor elk platform, zoals .NET. De toepassingen worden opgeslagen in een GitHub-opslagplaats.

Een standaardopslagaccount voor algemeen gebruik maken

In de Java-ontvangertoepassing worden berichten opgeslagen in Azure Blob Storage. Hiervoor is een opslagaccount vereist. Gebruik de storage account create opdracht om een opslagaccount (algemeen gebruik V2) te maken. We definiëren de volgende parameters voor deze opdracht:

Parameter Description
naam (vereist) Een naam voor uw opslagaccount.
resourcegroep (vereist) De eigenaar van de resourcegroep is de sandbox-resourcegroep, die al is gedefinieerd als een standaardwaarde.
locatie (optioneel) Regio is al gedefinieerd als een standaardwaarde, maar u kunt deze opnemen als u een andere regio wilt instellen dan de standaardlocatie van de resourcegroep.
sku De standaard-SKU-waarde van het opslagaccount is Standard_RAGRS. Maar in deze oefening geven we die waarde op.

In de vorige oefening hebben we standaardwaarden gedefinieerd voor resourcegroep en locatie, zodat we deze parameters uit de opdracht kunnen weglaten.

  1. Stel in Azure Cloud Shell de naam van het opslagaccount in op een variabele. Een naam van een opslagaccount moet uniek zijn binnen Azure en moet 3 tot 24 cijfers of kleine letters bevatten.

    STORAGE_NAME=storagename$RANDOM
    
  2. Voer de volgende opdracht uit om het opslagaccount te maken.

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

    Tip

    Het kan even duren voordat dit opslagaccount is gemaakt. Als het maken van een opslagaccount mislukt, wijzigt u de omgevingsvariabele en probeert u het opnieuw.

  3. Voer de volgende opdracht uit om de toegangssleutels te verkrijgen die zijn gekoppeld aan uw opslagaccount.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Twee sleutels die zijn gekoppeld aan uw opslagaccount, zijn uitvoer in JSON-indeling. Kopieer en sla de waarde van key1 op voor toekomstig gebruik. U hebt deze sleutel nodig voor toegang tot uw opslagaccount.

  5. Voer de volgende opdracht uit om de verbindingsreeks voor uw opslagaccount op te halen.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. De uitvoer bevat de verbindingsgegevens voor uw opslagaccount. Kopieer de waarde van connectionString en sla deze op. Het ziet er ongeveer als volgt uit:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
    
  7. Voer de volgende opdracht uit om een container te maken met de naam berichten in uw opslagaccount. Gebruik de connectionString-waarde die u in de vorige stap hebt gekopieerd.

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

De GitHub-opslagplaats voor Event Hubs klonen

Kloon in Cloud Shell de GitHub-opslagplaats van event hubs met git. De bronbestanden voor de toepassingen die u in deze les bouwt, bevinden zich in een GitHub-opslagplaats.

  1. Voer de volgende opdrachten uit om ervoor te zorgen dat u de basismap in Cloud Shell hebt geopend en kloon vervolgens deze opslagplaats.

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

De opslagplaats wordt gekloond naar uw basismap.

SimpleSend.java bewerken

In deze oefening gebruikt u de ingebouwde Cloud Shell-editor om de SimpleSend-toepassing te wijzigen. U moet uw Event Hubs-naamruimte, event hubnaam, naam van gedeeld toegangsbeleid en primaire sleutel toevoegen.

  1. Navigeer naar de map SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Open de Cloud Shell-editor in de huidige map.

    code .
    

    De bestanden in de huidige map worden weergegeven in het linkermenu en de editorruimte aan de rechterkant geeft de inhoud weer van de bestandsnaam die wordt vermeld in de titelbalk.

  3. Als dit nog niet is geopend, opent u SimpleSend.java door deze te selecteren in de lijst met bestanden.

  4. Zoek en vervang in de editor de volgende tekenreeksen onder 'Verbinding maken ionStringBuilder':

    • "Your Event Hubs namespace name" met de naam van uw Event Hubs-naamruimte.
    • "Your Event Hub" met de naam van uw Event Hub.
    • "Your policy name" door RootManageSharedAccessKey.
    • "Your primary SAS key" met de waarde van de primaryKey-sleutel voor uw Event Hubs-naamruimte die u eerder hebt opgeslagen.

    Als u deze waarden vergeet, kunt u overschakelen naar het terminalvenster onder de editor en de echo opdracht uitvoeren om de omgevingsvariabelen weer te geven. Bijvoorbeeld:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    Wanneer u een Event Hubs-naamruimte maakt, wordt voor uw primaire SAS-sleutel een 256-bits SAS-sleutel met de naam RootManageSharedAccessKey gemaakt en bevat deze primaire en secundaire sleutels die rechten voor verzenden, luisteren en beheren verlenen aan de naamruimte. Eerder in deze oefening hebt u de sleutel verkregen door een Azure CLI-opdracht uit te voeren; U kunt echter ook de sleutels en verbindingsreeks s vinden door uw Event Hubs-naamruimte te selecteren in Azure Portal en vervolgens in het menu onder de Instellingen gedeeld toegangsbeleid te selecteren. Selecteer nu de beleidsnaam RootManageSharedAccessKey om de SAS-beleidssleutels weer te geven.

  5. Sla het bestand SimpleSend.java op en sluit de editor.

    Tip

    Gebruik Ctrl+S om uw bewerkingen op te slaan. Sluit de editor af door op Ctrl+X in Windows en Linux of Cmd+S in macOS te drukken. In tegenstelling tot het Cloud Shell-terminalvenster gebruikt de Cloud Shell-editor typische sneltoetsen voor kopiëren/plakken voor uw besturingssysteem. U kunt ook het editormenu openen door het beletselteken (...) in de rechterbovenhoek te selecteren voor extra bewerkingsopdrachten.

Maven gebruiken om SimpleSend.java te bouwen

Nu bouwt u de Java-toepassing door mvn-opdrachten uit te voeren.

  1. Voer in Cloud Shell de volgende opdracht in om naar de hoofdmap SimpleSend te navigeren.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. Bouw de Java-toepassing SimpleSend. Met deze opdracht wordt uw toepassing gebouwd met behulp van de verbindingsgegevens voor uw Event Hub.

    mvn clean package -DskipTests
    

    Het buildproces kan enkele minuten duren. Controleer of het bericht [INFO] BUILD SUCCESS ([INFO] HET OPBOUWEN IS VOLTOOID) wordt weergegeven voordat u doorgaat.

    Build results for sender application.

EventProcessorSample.java bewerken

U configureert nu een ontvangertoepassing (ook wel abonneeof consument genoemd) om gegevens op te nemen uit uw Event Hub.

Voor de ontvangertoepassing zijn twee klassen beschikbaar: EventHubReceiver en EventProcessorHost. EventProcessorHost is gebouwd op EventHubReceiver, maar biedt een eenvoudigere programmatische interface dan EventHubReceiver. EventProcessorHost kan automatisch berichtpartities verdelen over meerdere exemplaren van EventProcessorHost met behulp van hetzelfde opslagaccount.

In deze procedure gebruikt u de EventProcessorHost methode. U bewerkt de EventProcessorSample-toepassing om de volgende waarden toe te voegen: uw Event Hubs-naamruimte, event hub-naam, naam van gedeeld toegangsbeleid en primaire sleutel, naam van opslagaccount, verbindingsreeks en containernaam.

  1. Ga naar de map EventProcessorSample door de volgende opdracht uit te voeren.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Open de Cloud Shell-editor.

    code .
    
  3. Selecteer het bestand EventProcessorSample.java.

  4. Zoek en vervang de volgende tekenreeksen in de editor:

    • ----EventHubNamespaceName---- met de naam van uw Event Hubs-naamruimte.
    • ----EventHubName---- met de naam van uw Event Hub.
    • ----SharedAccessSignatureKeyName---- door RootManageSharedAccessKey.
    • ----SharedAccessSignatureKey---- met de waarde van de primaryKey-sleutel voor uw Event Hubs-naamruimte die u eerder hebt opgeslagen.
    • ----AzureStorageConnectionString---- met uw verbindingsreeks voor het opslagaccount dat u eerder hebt opgeslagen.
    • ----StorageContainerName---- met berichten.
    • ----HostNamePrefix---- door de naam van uw opslagaccount.
  5. Sla EventProcessorSample.java op met behulp van het menu '...' of de sneltoets (Ctrl+S in Windows en Linux, Cmd+S in macOS).

  6. Sluit de editor.

Maven gebruiken om EventProcessorSample.java te bouwen

  1. Ga naar de hoofdmap EventProcessorSample door de volgende opdracht uit te voeren.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. Bouw de Java SimpleSend-toepassing door de volgende opdracht uit te voeren om ervoor te zorgen dat uw toepassing gebruikmaakt van de verbindingsgegevens voor uw Event Hub.

    mvn clean package -DskipTests
    

    Het buildproces kan enkele minuten duren. Controleer of het bericht [INFO] BUILD SUCCESS ([INFO] HET OPBOUWEN IS VOLTOOID) wordt weergegeven voordat u doorgaat.

    Build results for receiver application.

De zend- en ontvanger-apps starten

  1. Voer de Java-toepassing uit vanaf de opdrachtregel door de volgende java opdracht uit te voeren en een JAR-pakket op te geven. Voer de volgende opdrachten uit om de SimpleSend-toepassing te starten.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Wanneer de melding Het verzenden is voltooid... wordt weergegeven, drukt u op Enter.

    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. Start de EventProcessorSample-toepassing door de volgende opdracht uit te voeren.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. Wanneer berichten niet meer worden weergegeven op de console, drukt u op Enter of drukt u op Ctrl+C om het programma te beëindigen.

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

Samenvatting

In deze les hebt u een afzendertoepassing geconfigureerd die gereed is voor het verzenden van berichten naar uw Event Hub. U hebt ook een ontvangertoepassing geconfigureerd die gereed is voor het ontvangen van berichten van uw Event Hub.