Invio di notifiche di eventi fanout

con Amazon Simple Queue Service (SQS) e Amazon Simple Notification Service (SNS)

Introduzione

Questo tutorial illustra come implementare uno scenario di invio di messaggi fanout tramite Amazon Simple Notification Service (SNS) e Amazon Simple Queue Service (SQS). Nello scenario proposto, i messaggi vengono inviati agli abbonati al servizio, perciò non sarà più necessario verificare periodicamente o eseguire il polling degli aggiornamenti; inoltre ciò attiva l'elaborazione asincrona in parallelo dei messaggi da parte degli abbonati al servizio.

Per illustrare questo processo, supponiamo tu stia sviluppando un’applicazione nativa per il cloud che invia un messaggio Amazon SNS a un argomento ogni volta viene effettuato un ordine su un negozio online. Le code di Amazon SQS iscritte a tale argomento riceveranno ciascuna delle notifiche identiche per il nuovo ordine.

I servizi AWS utilizzati in questo tutorial sono inclusi nel Piano gratuito AWS.

 Costo richiesto per il completamento

Piano gratuito

 Servizi utilizzati

Per inviare notifiche di eventi fanout
su AWS è necessario disporre di un account

Il Piano gratuito AWS include 1.000.000 di pubblicazioni per Amazon Simple Notification Service e 1.000.000 di richieste di Amazon Simple Queue Service. 

Visualizza i dettagli del Piano gratuito AWS »

Implementazione

  • Facendo clic qui, la console di gestione AWS si aprirà in una nuova finestra del browser, per consentirti di mantenere aperta questa guida dettagliata. Quando viene caricata la schermata, inserisci nome utente e password per iniziare. Quindi, digita notifica nella barra di ricerca e seleziona Simple Notification Service per aprire la console del servizio.

    Console di gestione AWS

    a. Se viene visualizzata la pagina principale della console SNS, fai clic su Fase successiva.

    Se viene visualizzata la pagina principale della console di SNS, fare clic su Fase successiva.
  • In questa fase, creerai un argomento Amazon SNS. Un argomento è un canale di comunicazione per inviare messaggi e iscrivervi le notifiche. In questo esempio, un’applicazione di e-commerce invierà un messaggio tramite push a un argomento Amazon SNS ogni volta che viene effettuato un nuovo ordine sul negozio online. 

    a.  Nella pagina Crea argomento, digita New-Orders nella casella per assegnare un nome all'argomento, quindi fai clic su Crea argomento.

    Fare clic su Crea argomento

    b. La pagina sui dettagli dell'argomento conferma che quest'ultimo è stato creato correttamente.

    La pagina sui dettagli dell'argomento conferma che quest'ultimo è stato creato correttamente
  • Ora che hai creato l'argomento con Amazon SNS, devi creare delle code Amazon SQS da sottoscrivere all'argomento.

    Quando iscrivi più code a un argomento, ciascuna coda riceve delle notifiche identiche ogni volta che un messaggio viene inviato tramite push all’argomento stesso. I servizi collegati a queste code possono quindi elaborare gli ordini in modo asincrono e parallelo.

    Per esempio, un’istanza server di Amazon EC2 collegata a una delle code può gestire l’elaborazione o l’evasione dell’ordine, mentre l’altra istanza server può essere collegata a un warehouse di dati per analizzare tutti gli ordini ricevuti.

    Per rendere il tutorial più semplice, non collegheremo le istanze EC2 alle code.

    a. Fai clic qui per aprire la console Amazon SQS in una nuova finestra del browser. Se viene visualizzata la pagina principale di SQS, fai clic su Comincia a usarlo. Altrimenti, procedi alla fase successiva.

    Fare clic su Inizia subito

    b. La nostra prima coda archivierà gli ordini per un servizio di inventario fittizio che tiene traccia dei prodotti aggiungendoli o eliminandoli dall’inventario in base alle necessità e a seconda di ciascun ordine.  

    Sulla pagina Crea nuova coda, digita Orders-for-Inventory nel campo Nome della coda. Mantieni selezionato Coda standard e fai clic su Crea rapidamente una coda.

    Fai clic su Crea rapidamente una coda

    c. La nuova coda viene creata e selezionata nell'elenco delle code. Ora, devi creare una seconda coda per gestire l'analisi degli ordini.

    Fai clic su Crea nuova coda per creare un'altra coda per archiviare gli ordini per il servizio di analisi.

    Fare clic su Crea nuova coda

    d. Digita Orders-for-Analytics nel campo Nome della coda e fai clic su Crea rapidamente una coda

    Digitare Orders-for-Analytics nel campo Nome della coda e fare clic su Crea rapidamente una coda

    e. Questa nuova coda ore viene visualizzata nell'elenco delle code.

    Questa nuova coda ore viene visualizzata nell'elenco delle code
  • Ora che hai creato due code Amazon SQS, devi sottoscriverle all'argomento Amazon SNS, il quale trasmette notifiche ai nuovi ordini.

    a. Dalla lista delle code, seleziona le code Ordini-per-inventario e Ordini-per-analisi. In Operazioni della coda, seleziona Sottoscrivi code all'argomento SNS.

    In Operazioni della coda, selezionare Sottoscrivi code all'argomento SNS

    b. Viene visualizzata la finestra di dialogo Sottoscrivi a un argomento. Nell'elenco a discesa Scegli un argomento, seleziona il tuo argomento Amazon SNS New-Orders.

    Il tuo argomento SNS appare nella lista perché l’hai creato dallo stesso account che hai usato per creare le tue code Amazon SQS. Se l’argomento SNS viene creato da un altro account, puoi iscriverlo utilizzando l’ARN dell’argomento. Per ulteriori dettagli, consulta la documentazione di Amazon SNS.

    Mantieni invariata la sezione Regione argomento e fai clic su Sottoscrivi.

    Mantenere invariata la sezione Regione argomento e fare clic su Sottoscrivi

    c. Viene visualizzata la finestra di dialogo Risultato della sottoscrizione all'argomento. Fai clic su OK.

    Viene visualizzata la finestra di dialogo Risultato della sottoscrizione all'argomento. Fare clic su OK
  • Le tue code sono ora sottoscritte all'argomento. In questa fase, simulerai un nuovo ordine tramite un’applicazione di e-commerce fittizia che invia un messaggio tramite push all’argomento riportando i dettagli dell’ordine.

    a. Nella pagina dei dettagli dell'argomento New-Orders nella console di Amazon SNS, fai clic su Pubblica messaggio.

    Fare clic su Pubblica messaggio

    b. Viene visualizzata la pagina Pubblica messaggio sull'argomento. Nella casella Oggetto, digita Ordine 123-4567890-1234567. Nel campo Messaggio, inserisci il seguente testo per rappresentare un ordine di esempio:

    1 x widget a 29,99 USD
    2 x cavi widget a 4,99 USD

    Fai clic su Pubblica messaggio. Viene visualizzata una scheda di dialogo per la conferma.

    Fare clic su Pubblica messaggio
  • Una volta pubblicato un nuovo messaggio, Amazon SNS lo invia a ogni endpoint sottoscritto all'argomento. In uno scenario di fan-out come questo riportato, gli endpoint sono le code Amazon SQS.

    In questa fase, confermerai che le code hanno ricevuto la notifica di un nuovo ordine visualizzando il messaggio che l’argomento ha inviato alle code.

    a. Nella console di Amazon SQS, spunta la casella corrispondente alla coda Ordini-per-inventario nella lista delle code. Nel menu a discesa Operazioni della coda, seleziona Visualizza/elimina messaggi.

    Nel menu a discesa Operazioni della coda, selezionare Visualizza/elimina messaggi

    b. Fai clic su Inizia polling per messaggi.

    Fare clic su Inizia polling per messaggi

    c. Viene visualizzata la finestra di dialogo Visualizza/elimina messaggi per Orders-For-Inventory.

    Viene visualizzata la finestra di dialogo Visualizza/elimina messaggi per Orders-For-Inventory

    d. Nella colonna Corpo, fai clic su Ulteriori dettagli. La casella Dettagli del messaggio contiene un documento JSON con l'oggetto e il messaggio pubblicati sull'argomento.  

    In questo modo, hai confermato che la coda Orders-for-Inventory ha ricevuto la notifica del nuovo ordine dall'argomento New-Orders.  

    Fai clic su Chiudi.
     

    Fare clic su Chiudi

    e. Supponiamo che il nostro servizio di inventario fittizio abbia completato l’elaborazione del messaggio e che ora possiamo eliminare con sicurezza il messaggio dalla coda. 

    Fai clic su Elimina 1 messaggio. Per confermare, fai clic su Sì, elimina messaggi selezionati. Quindi, fai clic su Chiudi.

    Per confermare, fare clic su Sì, elimina messaggi selezionati

    f. Ripeti le fasi da 6a a 6e per confermare che anche la coda Orders-for-Analytics abbia ricevuto la notifica del nuovo ordine.

    Ripetere le fasi da 6a a 6e per confermare che anche la coda Orders-for-Analytics abbia ricevuto la notifica del nuovo ordine
  • In questa fase, devi eliminare le risorse create per questo tutorial, che includono le sottoscrizioni all'argomento, gli argomenti e le code. Per evitare di ricevere addebiti non desiderati, è una best practice eliminare le risorse non utilizzate.

    a. Apri la console Amazon SNS e fai clic su Argomenti nel pannello di navigazione sulla sinistra.

    Seleziona l'argomento New-Orders.

    Fai clic su Elimina per eliminare gli argomenti.

    Fare clic su Elimina per eliminare gli argomenti

    b. Viene visualizzata la finestra di dialogo di conferma Elimina. Digita cancellami nella finestra di dialogo e fai clic su Elimina. L'argomento e le relative sottoscrizioni vengono eliminate. Ora, puoi chiudere la finestra del browser con SNS (ma non disconnetterti, poiché devi eliminare le code nella console SQS).

    Digitare cancellami nella finestra di dialogo e fare clic su Elimina

    c. Nella console Amazon SQS, seleziona le code Orders-for-Inventory e Orders-for-Analytics. In Operazioni della coda, seleziona Elimina code.

    In Operazioni della coda, selezionare Elimina code

    d. Viene visualizzata la finestra di dialogo Elimina code. Fai clic su Sì, elimina 2 code. Le code vengono eliminate.

    Ora, puoi disconnetterti dalla console Amazon SQS.

     Fare clic su Sì, elimina 2 code

Questo tutorial è stato utile?

Congratulazioni!

Hai appena implementato uno scenario di fan-out utilizzando Amazon SNS e Amazon SQS. Ora puoi utilizzare Amazon SNS e Amazon SQS in combinazione per inviare messaggi alle applicazioni che richiedono notifiche immediate di un evento o per caricare i messaggi sulle code di Amazon SQS così che vengano successivamente elaborati da altre applicazioni.