Esercizio - Configurare le applicazioni per l'invio o la ricezione di messaggi tramite un hub eventi
È ora possibile configurare le applicazioni di pubblicazione e consumer per l'hub eventi.
In questa unità, si configurano le applicazioni per l'invio e 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, che è già stato definito come valore predefinito. |
location (facoltativo) | L'area è già stata definita come valore predefinito, ma è possibile includerla se si vuole impostare un'area diversa rispetto alla località 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.
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
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.
Eseguire il comando seguente per ottenere le chiavi di accesso associate all'account di archiviazione.
az storage account keys list --account-name $STORAGE_NAME
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.
Eseguire il comando seguente per ottenere la stringa di connessione per l'account di archiviazione.
az storage account show-connection-string -n $STORAGE_NAME
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=xxxxxxxxxxx"
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 che vengono compilate in questa unità si trovano in un repository GitHub.
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.
Passare alla cartella SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
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 i contenuti del nome file elencato nella barra del titolo.
Se non è già aperto, aprire SimpleSend.java selezionandolo dall'elenco di file.
Nell'editor, individuare e sostituire le stringhe seguenti in `ConnectionStringBuilder``:
"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 non si ricordano questi valori, è possibile passare alla finestra del terminale sotto l'editor ed eseguire il comando
echo
per visualizzare l'elenco delle 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.
Salvare il file SimpleSend.java quindi chiudere l'editor. Selezionare nell'angolo superiore destro dell'editor e usare le voci di menu Salva e Chiudi editor.
Usare Maven per compilare SimpleSend.java
A questo punto, è possibile compilare l'applicazione Java eseguendo i comandi mvn.
In Cloud Shell immettere il comando seguente per passare alla cartella SimpleSend principale.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
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.
Modificare EventProcessorSample.java
Ora si configura un'applicazione ricevitore (nota anche come sottoscrittore o utente) per inserire i dati dall'hub eventi.
Per l'applicazione ricevente 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 metodo EventProcessorHost
. Modificare l'applicazione EventProcessorSample per aggiungere i valori seguenti: Lo spazio dei nomi di Hub eventi, il nome dell'hub eventi, il nome dei criteri di accesso condiviso e la chiave primaria, il nome dell'account di archiviazione, la stringa di connessione e il nome del contenitore.
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
Aprire l'editor di Cloud Shell.
code .
Selezionare il file EventProcessorSample.java in Esplora file a sinistra.
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.
Se non si ricordano questi valori, è possibile passare alla finestra del terminale sotto l'editor ed eseguire il comando
echo
per visualizzare l'elenco delle variabili di ambiente. Ad esempio:echo $NS_NAME echo $HUB_NAME echo $STORAGE_NAME
Salvare EventProcessorSample.java con il menu "..." o i tasti di scelta rapida (CTRL+S in Windows e Linux, Comando+S in macOS).
Chiudere l'editor.
Usare Maven per compilare EventProcessorSample.java
Passare alla cartella EventProcessorSample principale eseguendo il comando seguente.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
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.
Avviare le app mittente e ricevitore
Eseguire l'applicazione Java dalla riga di comando eseguendo il comando
java
seguente e specificando un pacchetto 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
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...
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
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 per l'invio dei messaggi all'hub eventi. È stata inoltre configurata un'applicazione ricevitore per la ricezione dei messaggi dall'hub eventi.