Oefening: toepassingen configureren voor het verzenden of ontvangen van berichten via een Event Hub
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.
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
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.
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
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.
Voer de volgende opdracht uit om de verbindingsreeks voor uw opslagaccount op te halen.
az storage account show-connection-string -n $STORAGE_NAME
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=xxxxxxxxxxx"
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.
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.
Navigeer naar de map SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
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.
Als dit nog niet is geopend, opent u SimpleSend.java door deze te selecteren in de lijst met bestanden.
Zoek en vervang in de editor de volgende tekenreeksen onder 'ConnectionStringBuilder':
"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. Voorbeeld: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 Instellingen beleid voor gedeelde toegang te selecteren. Selecteer nu de beleidsnaam RootManageSharedAccessKey om de SAS-beleidssleutels weer te geven.
Sla het SimpleSend.java bestand op en sluit de editor. Selecteer in de rechterbovenhoek van de editor en gebruik de menu-items Opslaan en Sluiten .
Maven gebruiken om SimpleSend.java te bouwen
Nu bouwt u de Java-toepassing door mvn-opdrachten uit te voeren.
Voer in Cloud Shell de volgende opdracht in om naar de hoofdmap SimpleSend te navigeren.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
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.
EventProcessorSample.java bewerken
U configureert nu een ontvangertoepassing (ook wel abonnee of 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.
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
Open de Cloud Shell-editor.
code .
Selecteer het EventProcessorSample.java bestand in de Verkenner aan de linkerkant.
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.
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. Voorbeeld:echo $NS_NAME echo $HUB_NAME echo $STORAGE_NAME
Sla EventProcessorSample.java op met behulp van het menu '...' of de sneltoets (Ctrl+S in Windows en Linux, Cmd+S in macOS).
Sluit de editor.
Maven gebruiken om EventProcessorSample.java te bouwen
Ga naar de hoofdmap EventProcessorSample door de volgende opdracht uit te voeren.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
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.
De zend- en ontvanger-apps starten
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
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...
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
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.