Esercizio - Configurare le applicazioni per l'invio o la ricezione di messaggi tramite un hub eventi

Completato

È ora possibile configurare le applicazioni di pubblicazione e consumer per l'hub eventi.

In questa unità si configurano le applicazioni per l'invio o la ricezione di messaggi tramite l'hub eventi. Un'applicazione funge da mittente del messaggio (SimpleSend), l'altra da ricevitore del messaggio (EventProcessorSample). Poiché queste applicazioni sono scritte in Java, è possibile eseguire tutte le operazioni di sviluppo, test e gestione nel browser. Tuttavia, è necessario usare la stessa configurazione per ogni piattaforma, ad esempio .NET. Le applicazioni sono archiviate in un repository GitHub.

Creare un account di archiviazione standard per utilizzo generico

L'applicazione ricevitore Java archivia i messaggi in Archiviazione BLOB di Azure, che richiede un account di archiviazione. Per creare un account di archiviazione (uso generico V2), usare il comando storage account create. Per questo comando vengono definiti i parametri seguenti:

Parametro Descrizione
name (obbligatorio) Nome per l'account di archiviazione.
resource-group (obbligatorio) Il proprietario del gruppo di risorse è il gruppo di risorse sandbox, già definito come valore predefinito.
location (facoltativo) L'area è già definita come valore predefinito, ma è possibile includerla se si vuole impostare un'area diversa dalla posizione predefinita del gruppo di risorse.
sku Il valore predefinito dello SKU dell'account di archiviazione è Standard_RAGRS. In questo esercizio, tuttavia, si specifica tale valore.

Nell'esercizio precedente sono stati definiti i valori predefiniti per il gruppo di risorse e la località, in modo da poter omettere tali parametri dal comando.

  1. In Azure Cloud Shell impostare il nome dell'account di archiviazione su una variabile. Il nome dell'account di archiviazione deve essere univoco all'interno di Azure e deve contenere da 3 a 24 numeri o lettere minuscole.

    STORAGE_NAME=storagename$RANDOM
    
  2. Eseguire il comando seguente per creare l'account di archiviazione.

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

    Suggerimento

    La creazione di questo account di archiviazione potrebbe richiedere alcuni istanti. Se si verifica un errore durante la creazione dell'account di archiviazione, modificare la variabile di ambiente e riprovare.

  3. Eseguire il comando seguente per ottenere le chiavi di accesso associate all'account di archiviazione.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Due chiavi associate all'account di archiviazione vengono restituite in formato JSON. Copiare e salvare il valore di key1 per l'uso futuro. Questa chiave è necessaria per accedere all'account di archiviazione.

  5. Eseguire il comando seguente per ottenere la stringa di connessione per l'account di archiviazione.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. L'output contiene i dettagli di connessione per l'account di archiviazione. Copiare e salvare il valore di connectionString. L'output dovrebbe essere simile al seguente:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
    
  7. Eseguire il comando seguente per creare un contenitore denominato messages nell'account di archiviazione. Usare il valore di connectionString copiato nel passaggio precedente.

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

Clonare il repository GitHub di Hub eventi

In Cloud Shell clonare il repository GitHub di Hub eventi con git. I file di origine per le applicazioni compilate in questa unità si trovano in un repository GitHub.

  1. Eseguire i comandi seguenti per assicurarsi di trovarsi all'interno della home directory in Cloud Shell e quindi clonare questo repository.

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

Il repository viene clonato nella cartella principale.

Modificare SimpleSend.java

In questo esercizio si usa l'editor predefinito di Cloud Shell per modificare l'applicazione SimpleSend. È necessario aggiungere lo spazio dei nomi di Hub eventi, il nome dell'hub eventi, il nome dei criteri di accesso condiviso e la chiave primaria.

  1. Passare alla cartella SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Aprire l'editor di Cloud Shell nella cartella corrente.

    code .
    

    I file nella cartella corrente sono elencati nel menu a sinistra e lo spazio dell'editor a destra visualizza il contenuto del nome file elencato nella barra del titolo.

  3. Se non è già aperto, aprire SimpleSend.java selezionandolo dall'elenco di file.

  4. Nell'editor individuare e sostituire le stringhe seguenti in 'Connessione ionStringBuilder':

    • "Your Event Hubs namespace name" con il nome dello spazio dei nomi di Hub eventi.
    • "Your Event Hub" con il nome dell'hub eventi.
    • "Your policy name" con RootManageSharedAccessKey.
    • "Your primary SAS key" con il valore della chiave primaryKey per lo spazio dei nomi di Hub eventi che è stata salvata in precedenza.

    Se si dimenticano questi valori, è possibile passare alla finestra del terminale sotto l'editor ed eseguire il echo comando per elencare le variabili di ambiente. Ad esempio:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    Quando si crea uno spazio dei nomi di Hub eventi, viene creata una chiave di firma di accesso condiviso a 256 bit denominata RootManageSharedAccessKey che include una coppia di chiavi primaria e secondaria che concedono i diritti di invio, ascolto e gestione per lo spazio dei nomi. In precedenza in questo esercizio è stata ottenuta la chiave eseguendo un comando dell'interfaccia della riga di comando di Azure. È tuttavia possibile trovare le chiavi e le stringhe di connessione selezionando lo spazio dei nomi di Hub eventi nel portale di Azure e quindi nel menu in Impostazioni selezionare Criteri di accesso condiviso. Selezionare il nome del criterio RootManageSharedAccessKey per visualizzare le chiavi del criterio di firma di accesso condiviso.

  5. Salvare il file SimpleSend.java e quindi chiudere l'editor.

    Suggerimento

    Per salvare le modifiche, usare CTRL+S. Uscire dall'editor premendo CTRL+X in Windows e Linux o Cmd+S in macOS. A differenza della finestra del terminale di Cloud Shell, l'editor di Cloud Shell usa i tasti di scelta rapida copia/incolla tipici per il sistema operativo. In alternativa, aprire il menu dell'editor selezionando i puntini di sospensione (...) nell'angolo in alto a destra per altri comandi di modifica.

Usare Maven per compilare SimpleSend.java

A questo punto, si compila l'applicazione Java eseguendo i comandi mvn .

  1. In Cloud Shell immettere il comando seguente per passare alla cartella SimpleSend principale.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. Compilare l'applicazione Java SimpleSend. Questo comando compila l'applicazione usando i dettagli della connessione per l'Hub eventi.

    mvn clean package -DskipTests
    

    Il completamento del processo di compilazione può richiedere alcuni minuti. Assicurarsi che venga visualizzato il messaggio [INFO] BUILD SUCCESS ([INFORMAZIONI] COMPILAZIONE COMPLETATA) prima di continuare.

    Build results for sender application.

Modificare EventProcessorSample.java

È ora possibile configurare un ricevitore (noto anche come sottoscrittore o consumer) per inserire dati dall'hub eventi.

Per l'applicazione ricevitore sono disponibili due classi: EventHubReceiver ed EventProcessorHost. Il metodo EventProcessorHost è basato su EventHubReceiver, ma fornisce un'interfaccia programmatica più semplice rispetto a EventHubReceiver. EventProcessorHost può distribuire automaticamente le partizioni dei messaggi tra più istanze di EventProcessorHost usando lo stesso account di archiviazione.

In questa procedura si usa il EventProcessorHost metodo . È possibile modificare l'applicazione EventProcessorSample per aggiungere i valori seguenti: spazio dei nomi di Hub eventi, nome dell'hub eventi, nome dei criteri di accesso condiviso e chiave primaria, nome dell'account di archiviazione, stringa di connessione e nome del contenitore.

  1. Passare alla cartella EventProcessorSample eseguendo il comando seguente.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Aprire l'editor di Cloud Shell.

    code .
    
  3. Selezionare il file EventProcessorSample.java.

  4. Individuare e sostituire le stringhe seguenti nell'editor:

    • ----EventHubNamespaceName---- con il nome dello spazio dei nomi di Hub eventi.
    • ----EventHubName---- con il nome dell'hub eventi.
    • ----SharedAccessSignatureKeyName---- con RootManageSharedAccessKey.
    • ----SharedAccessSignatureKey---- con il valore della chiave primaryKey per lo spazio dei nomi di Hub eventi che è stata salvata in precedenza.
    • ----AzureStorageConnectionString---- con la stringa di connessione dell'account di archiviazione salvata in precedenza.
    • ----StorageContainerName---- con messages.
    • ----HostNamePrefix---- con il nome dell'account di archiviazione.
  5. Salvare EventProcessorSample.java con il menu "..." o i tasti di scelta rapida (CTRL+S in Windows e Linux, Comando+S in macOS).

  6. Chiudere l'editor.

Usare Maven per compilare EventProcessorSample.java

  1. Passare alla cartella EventProcessorSample principale eseguendo il comando seguente.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. Compilare l'applicazione SimpleSend Java eseguendo il comando seguente per assicurarsi che l'applicazione usi i dettagli della connessione per l'hub eventi.

    mvn clean package -DskipTests
    

    Il completamento del processo di compilazione può richiedere alcuni minuti. Assicurarsi che venga visualizzato il messaggio [INFO] BUILD SUCCESS ([INFORMAZIONI] COMPILAZIONE COMPLETATA) prima di continuare.

    Build results for receiver application.

Avviare le app mittente e ricevitore

  1. Eseguire l'applicazione Java dalla riga di comando eseguendo il comando seguente java e specificando un pacchetto con estensione jar. Eseguire i comandi seguenti per avviare l'applicazione SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Quando viene visualizzato il messaggio Invio completato..., premere INVIO.

    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. Avviare l'applicazione EventProcessorSample con il comando seguente.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. Quando non vengono più visualizzati messaggi nella console, premere INVIO o CTRL+C per terminare il programma.

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

Riepilogo

In questa unità è stata configurata un'applicazione mittente pronta per inviare messaggi all'hub eventi. È stata configurata anche un'applicazione ricevitore pronta per ricevere messaggi dall'hub eventi.