Övning – Konfigurera program för att skicka eller ta emot meddelanden via en händelsehubb

Slutförd

Nu är du redo att konfigurera dina utgivar- och konsumentappar för din händelsehubb.

I den här lektionen konfigurerar du program för att skicka eller ta emot meddelanden via din händelsehubb. Ett program fungerar som meddelandesändare (SimpleSend), det andra som meddelandemottagare (EventProcessorSample). Eftersom dessa program är skrivna i Java kan du utveckla, testa och hantera dem i webbläsaren. Samma konfiguration måste dock användas för varje plattform, till exempel .NET. Programmen lagras på en GitHub-lagringsplats.

Skapa ett allmänt standardlagringskonto

Java-mottagarprogrammet lagrar meddelanden i Azure Blob Storage, vilket kräver ett lagringskonto. Om du vill skapa ett lagringskonto (generell användning V2) använder du storage account create kommandot . Vi definierar följande parametrar för det här kommandot:

Parameter Description
namn (krävs) Ett namn på lagringskontot.
resursgrupp (krävs) Resursgruppens ägare är sandbox-resursgruppen, som redan har definierats som ett standardvärde.
location (valfritt) Regionen har redan definierats som ett standardvärde, men du kan inkludera den om du vill ange en annan region än standardplatsen för resursgruppen.
sku Standard-SKU-värdet för lagringskontot är Standard_RAGRS. Men i den här övningen anger vi det värdet.

I föregående övning definierade vi standardvärden för resursgrupp och plats, så att vi kan utelämna dessa parametrar från kommandot.

  1. I Azure Cloud Shell anger du namnet på lagringskontot till en variabel. Ett lagringskontonamn måste vara unikt i Azure och måste innehålla 3 till 24 siffror eller gemener.

    STORAGE_NAME=storagename$RANDOM
    
  2. Kör följande kommando för att skapa lagringskontot.

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

    Dricks

    Det kan ta en stund att skapa det här lagringskontot. Om det inte går att skapa lagringskontot ändrar du miljövariabeln och försöker igen.

  3. Kör följande kommando för att hämta de åtkomstnycklar som är associerade med ditt lagringskonto.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Två nycklar som är associerade med ditt lagringskonto är utdata i JSON-format. Kopiera och spara värdet för key1 för framtida användning. Du behöver den här nyckeln för att få åtkomst till ditt lagringskonto.

  5. Kör följande kommando för att hämta anslutningssträng för ditt lagringskonto.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. Utdata innehåller anslutningsinformationen för ditt lagringskonto. Kopiera och spara värdet för connectionString. Den bör se ut ungefär så här:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
    
  7. Kör följande kommando för att skapa en container med namnet meddelanden i ditt lagringskonto. Använd värdet connectionString som du kopierade i föregående steg.

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

Klona GitHub-lagringsplatsen för händelsehubbar

I Cloud Shell klonar du GitHub-lagringsplatsen för händelsehubbar med git. Källfilerna för de program som du skapar i den här enheten finns på en GitHub-lagringsplats.

  1. Kör följande kommandon för att se till att du är i din arbetskatalog i Cloud Shell. Klona sedan den här lagringsplatsen.

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

Databasen klonas till arbetsmappen.

Redigera SimpleSend.java

I den här övningen använder du den inbyggda Cloud Shell-redigeraren för att ändra SimpleSend-programmet. Du måste lägga till event hubs-namnrymden, händelsehubbens namn, namn på principen för delad åtkomst och primärnyckel.

  1. Ändra till mappen SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Öppna Cloud Shell-redigeraren i den aktuella mappen.

    code .
    

    Filerna i den aktuella mappen visas i den vänstra menyn, och redigeringsutrymmet till höger visar innehållet i filnamnet som anges i namnlisten.

  3. Om du inte redan har öppnat öppnar du SimpleSend.java genom att välja det i fillistan.

  4. Leta upp och ersätt följande strängar i redigeringsprogrammet under "Anslut ionStringBuilder":

    • "Your Event Hubs namespace name" med namnet på Event Hubs-namnrymden.
    • "Your Event Hub" med namnet på händelsehubben.
    • "Your policy name" med Välj RootManageSharedAccessKey.
    • "Your primary SAS key" med värdet för nyckeln primaryKey för Event Hubs-namnrymden som du sparade tidigare.

    Om du glömmer dessa värden kan du växla till terminalfönstret under redigeraren och köra echo kommandot för att visa miljövariablerna. Till exempel:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    När du skapar ett Event Hubs-namnområde för din primära SAS-nyckel skapas en 256-bitars SAS-nyckel med namnet RootManageSharedAccessKey och innehåller primära och sekundära nycklar som beviljar behörighet att skicka, lyssna och hantera till namnområdet. Tidigare i den här övningen hämtade du nyckeln genom att köra ett Azure CLI-kommando. Men du kan också hitta nycklar och anslutningssträng genom att välja event hubs-namnområdet i Azure-portalen och sedan välja Principer för delad åtkomst på menyn under Inställningar. Välj nu principnamnet RootManageSharedAccessKey för att visa SAS-principnycklarna.

  5. Spara filen SimpleSend.java och stäng sedan redigeraren.

    Dricks

    Om du vill spara dina redigeringar använder du Ctrl+S. Avsluta redigeraren genom att trycka på Ctrl+X i Windows och Linux eller Cmd+S på macOS. Till skillnad från Cloud Shell-terminalfönstret använder Cloud Shell-redigeraren vanliga tangentbordsacceleratortangenter för kopiera/klistra in för operativsystemet. Du kan också öppna redigeringsmenyn genom att välja ellipsen (...) i det övre högra hörnet för ytterligare redigeringskommandon.

Använda Maven för att bygga SimpleSend.java

Nu skapar du Java-programmet genom att köra mvn-kommandon .

  1. I Cloud Shell anger du följande kommando för att navigera till huvudmappen SimpleSend .

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. Skapa SimpleSend för Java-program. Det här kommandot skapar ditt program med hjälp av anslutningsinformationen för händelsehubben.

    mvn clean package -DskipTests
    

    Det kan ta flera minuter att slutföra byggprocessen. Kontrollera att meddelandet [INFO] BUILD SUCCESS visas innan du fortsätter.

    Build results for sender application.

Redigera EventProcessorSample.java

Nu konfigurerar du ett mottagarprogram (även kallat prenumerant eller konsument) för att mata in data från din händelsehubb.

För mottagarprogrammet är två klasser tillgängliga: EventHubReceiver och EventProcessorHost. EventProcessorHost bygger på EventHubReceiver, men tillhandahåller ett enklare programmatiskt gränssnitt än EventHubReceiver. EventProcessorHost kan distribuera meddelandepartitioner till flera instanser av EventProcessorHost med samma lagringskonto.

I den här proceduren använder EventProcessorHost du -metoden. Du redigerar EventProcessorSample-programmet för att lägga till följande värden: Event Hubs-namnområdet, händelsehubbens namn, namn på principen för delad åtkomst och primärnyckel, lagringskontonamn, anslutningssträng och containernamn.

  1. Ändra till mappen EventProcessorSample genom att köra följande kommando.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Öppna Cloud Shell-redigeraren.

    code .
    
  3. Välj filen EventProcessorSample.java.

  4. Leta upp och ersätt följande strängar i redigeraren:

    • ----EventHubNamespaceName---- med namnet på Event Hubs-namnrymden.
    • ----EventHubName---- med namnet på händelsehubben.
    • ----SharedAccessSignatureKeyName---- med Välj RootManageSharedAccessKey.
    • ----SharedAccessSignatureKey---- med värdet för nyckeln primaryKey för Event Hubs-namnrymden som du sparade tidigare.
    • ----AzureStorageConnectionString---- med lagringskontots anslutningssträng som du sparade tidigare.
    • ----StorageContainerName---- med messages.
    • ----HostNamePrefix---- med namnet på ditt lagringskonto.
  5. Spara EventProcessorSample.java antingen via menyn ”...” eller snabbtangenten (Ctrl + S i Windows och Linux, Cmd + S på macOS).

  6. Stäng redigeraren.

Använda Maven för att bygga EventProcessorSample.java

  1. Ändra till huvudmappen EventProcessorSample genom att köra följande kommando.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. Skapa Java SimpleSend-programmet genom att köra följande kommando för att säkerställa att ditt program använder anslutningsinformationen för din händelsehubb.

    mvn clean package -DskipTests
    

    Det kan ta flera minuter att slutföra byggprocessen. Kontrollera att meddelandet [INFO] BUILD SUCCESS visas innan du fortsätter.

    Build results for receiver application.

Starta avsändar- och mottagarappen

  1. Kör Java-programmet från kommandoraden genom att köra följande java kommando och ange ett .jar-paket. Kör följande kommandon för att starta SimpleSend-appen.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Tryck på Retur när du ser Överföringen är klar....

    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. Starta EventProcessorSample-programmet genom att köra följande kommando.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. När meddelanden slutar visas i konsolen trycker du på Retur eller trycker på CTRL+C för att avsluta programmet.

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

Sammanfattning

I den här lektionen konfigurerade du ett avsändarprogram som är redo att skicka meddelanden till din händelsehubb. Du har också konfigurerat ett mottagarprogram som är redo att ta emot meddelanden från händelsehubben.