Gyakorlat – Alkalmazások konfigurálása üzenetek eseményközponton keresztüli küldésére vagy fogadására

Befejeződött

Most már készen áll a publikáló és fogyasztói alkalmazások konfigurálására az eseményközpont számára.

Ebben a leckében úgy konfigurálja az alkalmazásokat, hogy üzeneteket küldjenek vagy fogadjanak az eseményközponton keresztül. Az egyik alkalmazás üzenetküldőként (SimpleSend), a másik üzenet fogadójaként (EventProcessorSample) működik. Mivel ezek az alkalmazások Java nyelven vannak megírva, a böngészőben minden fejlesztést, tesztelést és felügyeletet elvégezhet. Azonban minden platformhoz, például a .NET-hez ugyanazt a konfigurációt kell használni. Az alkalmazások egy GitHub-adattárban vannak tárolva.

Általános célú standard szintű tárfiók létrehozása

A Java-fogadó alkalmazás az Azure Blob Storage-ban tárolja az üzeneteket, amelyhez tárfiók szükséges. Tárfiók (általános célú V2) létrehozásához használja a storage account create parancsot. A parancshoz a következő paramétereket határozzuk meg:

Paraméter Leírás
név (kötelező) A tárfiók neve.
erőforráscsoport (kötelező) Az erőforráscsoport tulajdonosa a tesztkörnyezeti erőforráscsoport, amely már alapértelmezett értékként van definiálva.
hely (nem kötelező) A régió már alapértelmezett értékként van definiálva, de belefoglalhatja, ha az alapértelmezett erőforráscsoport helyétől eltérő régiót szeretne beállítani.
sku A tárfiók alapértelmezett termékváltozat-értéke Standard_RAGRS. Ebben a gyakorlatban azonban ezt az értéket adhatja meg.

Az előző gyakorlatban meghatároztuk az erőforráscsoport és a hely alapértelmezett értékeit, így ezeket a paramétereket kihagyhatjuk a parancsból.

  1. Az Azure Cloud Shellben állítsa a tárfiók nevét egy változóra. A tárfiók nevének egyedinek kell lennie az Azure-ban, és 3–24 számot vagy kisbetűt kell tartalmaznia.

    STORAGE_NAME=storagename$RANDOM
    
  2. Futtassa a következő parancsot a tárfiók létrehozásához.

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

    Tipp.

    A tárfiók létrehozása eltarthat egy ideig. Ha a tárfiók létrehozása sikertelen, módosítsa a környezeti változót, és próbálkozzon újra.

  3. Futtassa a következő parancsot a tárfiókhoz társított hozzáférési kulcsok beszerzéséhez.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. A tárfiókhoz társított két kulcs JSON formátumú kimenet. Másolja és mentse az 1. kulcs értékét későbbi használatra. Erre a kulcsra van szüksége a tárfiók eléréséhez.

  5. Futtassa a következő parancsot a tárfiókhoz tartozó kapcsolati sztring beszerzéséhez.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. A kimenet tartalmazza a tárfiók kapcsolati adatait. Másolja ki és mentse a connectionString (kapcsolati sztring) értékét. Ennek az alábbihoz hasonlónak kell lennie:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
    
  7. Futtassa az alábbi parancsot egy üzenetek nevű tároló létrehozásához a tárfiókban. Használja az előző lépésben másolt connectionString értéket.

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

Az eseményközpontok GitHub-adattárának klónozása

A Cloud Shellben klónozza az eseményközpontok GitHub-adattárát a következővel git: . Az ebben az egységben létrehozott alkalmazások forrásfájljai egy GitHub-adattárban találhatók.

  1. A következő parancsokkal győződjön meg arról, hogy a kezdőkönyvtárban van a Cloud Shellben, és klónozza ezt az adattárat.

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

A rendszer klónozza az adattárat a kezdőkönyvtárba.

A SimpleSend.java szerkesztése

Ebben a gyakorlatban a beépített Cloud Shell-szerkesztő használatával módosíthatja a SimpleSend alkalmazást. Hozzá kell adnia az Event Hubs-névteret, az eseményközpont nevét, a megosztott hozzáférési szabályzat nevét és az elsődleges kulcsot.

  1. Lépjen a SimpleSend mappába.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Nyissa meg a Cloud Shell-szerkesztőt az aktuális mappában.

    code .
    

    Az aktuális mappában lévő fájlok a bal oldali menüben jelennek meg, a jobb oldali szerkesztőtér pedig a címsorban felsorolt fájlnév tartalmát jeleníti meg.

  3. Ha még nem nyitotta meg, nyissa meg a SimpleSend.java fájlt a fájllistában való kijelöléssel.

  4. A szerkesztőben keresse meg és cserélje le a következő sztringeket a "Csatlakozás ionStringBuilder" alatt:

    • "Your Event Hubs namespace name" az Event Hubs-névtér nevével.
    • "Your Event Hub" az eseményközpont nevével.
    • "Your policy name" a RootManageSharedAccessKey értékével.
    • "Your primary SAS key" a primaryKey kulcs értékével a korábban mentett Event Hubs-névtérhez.

    Ha elfelejti ezeket az értékeket, váltson a szerkesztő alatti terminálablakra, és futtassa a echo parancsot a környezeti változók listázásához. Például:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    Az elsődleges SAS-kulcs esetében egy Event Hubs-névtér létrehozásakor létrejön egy RootManageSharedAccessKey nevű 256 bites SAS-kulcs, amely elsődleges és másodlagos kulcsokat tartalmaz, amelyek a névtérhez való jogosultságokat biztosítanak, figyelik és kezelik. A gyakorlat korábbi részében egy Azure CLI-parancs futtatásával szerezte be a kulcsot; A kulcsokat és kapcsolati sztring azonban az Event Hubs-névtér azure portalon való kiválasztásával is megtalálhatja, majd a Gépház alatti menüben válassza a Megosztott hozzáférési szabályzatok lehetőséget; most válassza ki a RootManageSharedAccessKey házirendnevet az SAS-szabályzatkulcsok megjelenítéséhez.

  5. Mentse a SimpleSend.java fájlt, majd zárja be a szerkesztőt.

    Tipp.

    A módosítások mentéséhez használja a Ctrl+S billentyűkombinációt. Lépjen ki a szerkesztőből a Ctrl+X billentyűkombináció lenyomásával Windows és Linux rendszeren, macOS rendszeren pedig Cmd+S billentyűkombinációval. A Cloud Shell terminálablakától eltérően a Cloud Shell-szerkesztő az operációs rendszer tipikus másolási/beillesztési billentyűparancsait használja. Másik lehetőségként nyissa meg a szerkesztőmenüt a jobb felső sarokban található három pontra (...) kattintva további szerkesztési parancsokért.

A SimpleSend.java fájl létrehozása a Maven használatával

Most mvn-parancsok futtatásával hozza létre a Java-alkalmazást.

  1. A Cloud Shellben adja meg a következő parancsot a SimpleSendmappájához való navigáláshoz.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. A Java-alapú SimpleSend alkalmazás létrehozása. Ez a parancs az eseményközpont kapcsolati adataival hozza létre az alkalmazást.

    mvn clean package -DskipTests
    

    A létrehozási folyamat több percet is igénybe vehet. Mielőtt folytatná győződjön meg róla, hogy megjelent az [INFO] BUILD SUCCESS (Sikeres létrehozás) üzenet.

    Build results for sender application.

Az EventProcessorSample.java szerkesztése

Mostantól konfigurálhat egy fogadóalkalmazást (más néven előfizetőt vagy fogyasztót) az eseményközpontból származó adatok betöltéséhez.

A fogadóalkalmazáshoz két osztály érhető el: EventHubReceiver és EventProcessorHost. Az EventProcessorHost az EventHubReceiverre épül, de egyszerűbb programozott felületet biztosít, mint az EventHubReceiver. Az EventProcessorHost automatikusan terjesztheti az üzenetpartíciókat az EventProcessorHost több példánya között ugyanannak a tárfióknak a használatával.

Ebben az eljárásban a metódust EventProcessorHost használja. Az EventProcessorSample alkalmazást a következő értékek hozzáadásához szerkessze: Az Event Hubs-névtér, az eseményközpont neve, a közös hozzáférésű hozzáférési szabályzat neve és az elsődleges kulcs, a tárfiók neve, a kapcsolati sztring és a tároló neve.

  1. Az alábbi parancs futtatásával váltson az EventProcessorSample mappára.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Nyissa meg a Cloud Shell-szerkesztőt.

    code .
    
  3. Jelölje ki az EventProcessorSample.java fájlt.

  4. Keresse meg és cserélje le a következő sztringeket a szerkesztőben:

    • ----EventHubNamespaceName---- az Event Hubs-névtér nevével.
    • ----EventHubName---- az eseményközpont nevével.
    • ----SharedAccessSignatureKeyName---- a RootManageSharedAccessKey értékével.
    • ----SharedAccessSignatureKey---- a primaryKey kulcs értékével a korábban mentett Event Hubs-névtérhez.
    • ----AzureStorageConnectionString---- a tárfiók kapcsolati sztringjével, amelyet korábban mentett.
    • ----StorageContainerName---- a messages értékével.
    • ----HostNamePrefix---- a tárfiókja nevére.
  5. Mentse az EventProcessorSample.java fájlt a három ponttal (...) jelölt menü vagy a billentyűparancs (Windowson és Linuxon Ctrl+S, macOS rendszeren Cmd+S) használatával.

  6. Zárja be a szerkesztőt.

Az EventProcessorSample.java fájl létrehozása a Maven használatával

  1. Az alábbi parancs futtatásával váltson a fő EventProcessorSample mappára.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. A Következő parancs futtatásával hozza létre a Java SimpleSend alkalmazást, hogy az alkalmazás a kapcsolat adatait használja az eseményközponthoz.

    mvn clean package -DskipTests
    

    A létrehozási folyamat több percet is igénybe vehet. Mielőtt folytatná győződjön meg róla, hogy megjelent az [INFO] BUILD SUCCESS (Sikeres létrehozás) üzenet.

    Build results for receiver application.

A küldő- és fogadó alkalmazás indítása

  1. Futtassa a Java-alkalmazást a parancssorból a következő java parancs futtatásával és egy .jar-csomag megadásával. A következő parancsokat használja a SimpleSend alkalmazás elindításához.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Amikor megjelenik a Küldés befejezve... üzenet, nyomja le az Enter billentyűt.

    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. Indítsa el az EventProcessorSample alkalmazást az alábbi parancs futtatásával.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. Ha az üzenetek nem jelennek meg a konzolon, nyomja le az Enter billentyűt, vagy nyomja le a CTRL+C billentyűkombinációt a program befejezéséhez.

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

Összesítés

Ebben a leckében konfigurált egy küldőalkalmazást, amely készen áll arra, hogy üzeneteket küldjön az eseményközpontba. Konfigurált egy fogadóalkalmazást is, amely készen áll arra, hogy üzeneteket fogadjon az eseményközpontból.