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

Per illustrare questo presupporremo che stai sviluppando un'applicazione nativa per il cloud che invii un messaggio Amazon SNS a un argomento ogni volta che viene effettuato un ordine su uno store online. Le code di Amazon SQS che sono iscritte a quell'argomento riceveranno notifiche identiche per il nuovo ordine.

I servizi AWS usati in questo tutorial sono coperti dal piano gratuito di AWS.

Per inviare le notifiche di eventi in fan-out su AWS è necessario possedere un account

Crea un account gratuito

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

Visualizza i dettagli del piano gratuito di AWS »

 

Facendo clic qui, la Console di gestione AWS si aprirà in una nuova finestra del browser, così sarà possibile mantenere questa guida dettagliata aperta. Quando viene caricata questa schermata, inserisci nome utente e password per iniziare. Digita notification nella barra di ricerca e seleziona Simple Notification Service per aprire la console del servizio.

tmt_send-fanout-event-notifications_1a

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_1a

a. Se viene visualizzata la pagina principale della console di SNS, fai clic su Get Started Now.

tmt_send-fanout-event-notifications_1b

(fai clic per ingrandire)

tmt_send-fanout-event-notifications_1b

In questa fase creerai un argomento Amazon SNS. Un argomento è un canale di comunicazione per inviare messaggi e iscriversi alle notifiche. In questo caso un'applicazione e-commerce di esempio invierà un messaggio a un argomento Amazon SNS ogni volta che viene effettuato un nuovo ordine sullo store online. 


a. Sotto Common Actions (Azioni comuni), fai clic su Create topic (Crea argomento).

tmt_send-fanout-event-notifications_2a

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_2a

b. Viene visualizzata la finestra di dialogo Create topic (Crea argomento). Nella casella Topic name (Nome argomento) digita New-Orders (Nuovi Ordini), quindi fai clic su Create Topic (Crea argomento).

tmt_send-fanout-event-notifications_2b

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_2b

c. Viene visualizzata la pagina Topic Details (Dettagli argomento).

tmt_send-fanout-event-notifications_2c

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_2c

Dopo aver creato l'argomento con Amazon SNS, potrai creare le code di Amazon SQS che si iscriveranno all'argomento.

Quando si iscrivono più code a un argomento, ciascuna di esse riceve notifiche identiche ogni volta che un messaggio viene indirizzato all'argomento. I servizi collegati a tali code possono quindi elaborare gli ordini in modo asincrono e in parallelo.

Ad esempio, un'istanza server di Amazon EC2 collegata a una delle code è in grado di gestire l'elaborazione o l'evasione dell'ordine, mentre l'altra istanza server può essere collegata a un data warehouse per l'analisi di tutti gli ordini ricevuti.

Per non complicare le cose, non collegheremo le istanze EC2 alle code in questo tutorial.


a. Fai clic qui per aprire la console di Amazon SQS in una nuova finestra del browser. Se viene visualizzata la pagina principale della console SQS, fai clic su Get Started Now (Inizia ora). In caso contrario, procedere al passo successivo.

 

tmt_send-fanout-event-notifications_3a

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_3a

b. La nostra prima coda memorizzerà gli ordini per un servizio di inventario fittizio che tiene traccia dei prodotti, li aggiunge e li rimuove in base alle esigenze del magazzino dopo ogni ordine.  

Nella pagina Create New Queue (Crea una nuova coda) immetti Orders-for-Inventory nel campo Queue Name (Nome coda). Lascia la voce Standard Queue (Coda standard) selezionata e fai clic su Quick-Create Queue (Crea velocemente una coda).

tmt_send-fanout-event-notifications_3b

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_3b

c. La nuova coda viene creata e selezionata nella lista. Successivamente potrai creare una coda per gestire le attività di analisi sugli ordini.

Fai clic su Create New Queue (Crea nuova coda) per creare un'altra coda per memorizzare gli ordini per il servizio Analytics.

tmt_send-fanout-event-notifications_3c

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_3c

d. Inserisci Orders-for-Analytics nel campo Queue Name (Nome coda) e fai clic su Quick-Create Queue (Crea velocemente una coda).

tmt_send-fanout-event-notifications_3d

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_3d

e. La nuova coda ora appare nell’elenco.

tmt_send-fanout-event-notifications_3e

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_3e

Dopo aver creato le tue due code Amazon SQS, è necessaria l'iscrizione all'argomento di Amazon SNS che invia notifiche broadcast dei nuovi ordini.


a. Dalla lista di code, seleziona le code Orders-for-Inventory e Orders-for-Analytics. Da Queue Actions (Azioni Coda), seleziona Iscriviti alle code per l'argomento SNS.

tmt_send-fanout-event-notifications_4a

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_4a

b. Viene visualizzata la finestra di dialogo Subscribe to a topic (Iscriviti a un argomento). Dall’elenco a discesa Choose a topic (Scegli un argomento), seleziona l’argomento Amazon SNS Nuovi-Ordini.

L’argomento SNS appare nella lista perchè l’hai creato nello stesso account che hai usato per creare le code Amazon SQS. Se l’argomento SNS fosse stato creato da un altro account, sarebbe possibile effettuare la sottoscrizione utilizzando l’argomento ARN. Per ulteriori informazioni consulta la documentazione relativa ad Amazon SNS.

Lascia Topic Region invariato e fai clic su Subscribe.

tmt_send-fanout-event-notifications_4b

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_4b

c. Viene visualizzata la finestra di dialogo Topic Subscription Result (Risultato dell’iscrizione all’argomento). Fai clic su OK.

tmt_send-fanout-event-notifications_4c

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_4c

Le code sono ora iscritte all’argomento. In questa fase è possibile simulare un nuovo ordine facendo inviare un messaggio dall'applicazione e-commerce fittizia all'argomento con i dettagli dell'ordine.


a. Nella console di Amazon SNS, fai clic su Topics (Argomenti).

 

tmt_send-fanout-event-notifications_5a

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_5a

b. Seleziona l’argomento Nuovi-Ordini, quindi fai clic sul pulsante Publish to topic (Pubblica all’argomento).


tmt_send-fanout-event-notifications_5b

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_5b

c. Viene visualizzata la pagina Publish a message (Pubblica un messaggio).

Nella casella Subject (Oggetto) digita Ordine 123-4567890-1234567.

In Message format (Formato del messaggio), seleziona RAW.

Nel campo Message (Messaggio) immetti il testo seguente che rappresenta un esempio di ordine:
1 x Widget @ 29,99 USD
2 x Widget Cables@ 4,99 USD

Fai clic su Publish Message (Pubblica messaggio). Viene visualizzata una finestra di dialogo di conferma.

tmt_send-fanout-event-notifications_5c

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_5c

Ogni volta che un nuovo messaggio viene pubblicato, Amazon SNS consegnerà quel messaggio a ogni endpoint iscritto all'argomento. In una situazione in fan-out come questa, le code di Amazon SQS sono gli endpoint.

In questa fase, verificherai che le code hanno ricevuto la notifica del nuovo ordine controllando il messaggio inviato alle code dall’argomento.


a. Nella console di Amazon SQS, seleziona la casella di controllo per la coda Orders-for-Inventory nell’elenco delle code. Dal menu a discesa Queue Action (Azioni coda) seleziona View/Delete Messages (Visualizza/Elimina Messaggi).

 

tmt_send-fanout-event-notifications_6a

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_6a

b. Fai clic su Start Polling for Messages (Avvia polling per i messaggi).


tmt_send-fanout-event-notifications_6b

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_6b

c. Viene visualizzata la finestra di dialogo View/Delete Messages in Orders-for-Inventory (Visualizza/Elimina i messaggi in Orders-for-Inventory).

tmt_send-fanout-event-notifications_6c

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_6c

d. Nella colonna Body, fai clic su More Details (Ulteriori dettagli). La casella Message Details (Dettagli del messaggio) contiene un documento in formato JSON che contiene l'oggetto e il messaggio pubblicato nell'argomento.

Questa è la conferma che la coda Orders-for-Inventory ha ricevuto la notifica del nuovo ordine dall'argomento Nuovi-Ordini .

Fai clic su Close (Chiudi).

 

tmt_send-fanout-event-notifications_6d

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_6d

e. Presumiamo che il nostro servizio di inventario fittizio ha terminato l'elaborazione di questo messaggio e che ora possiamo eliminare in modo sicuro il messaggio dalla coda. 

Fai clic su Delete 1 Message (Elimina 1 Messaggio). Per confermare, fai clic su Yes, Delete Checked Messages (Sì, cancella messaggi letti). Fai clic su Close (Chiudi).

 

tmt_send-fanout-event-notifications_6e

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_6e

f. Ripeti i punti da 6a a 6e per confermare che anche la coda Orders-for-Analytics ha ricevuto la notifica del nuovo ordine.

tmt_send-fanout-event-notifications_6f

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_6f

In questa fase eliminerai le risorse create per questo tutorial che includono le iscrizioni all'argomento, gli argomenti e le code. È consigliabile eliminare le risorse non più in uso in modo da non incorrere in addebitamenti di costi.


a. Apri la console di Amazon SNS e fai clic su Topics (Argomenti) nel riquadro di navigazione a sinistra.

Seleziona l'argomento Nuovi-Ordini.

Fai clic sull’elenco a discesa Actions (Azioni) e seleziona Delete Topics (Elimina argomenti).


tmt_send-fanout-event-notifications_7a

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_7a

b. Viene visualizzata la finestra di dialogo Delete (Elimina). Fai clic su Delete (Elimina). L'argomento e le relative iscrizioni vengono eliminati. Ora puoi chiudere la finestra del browser SNS (ma non scollegarti, perché devi ancora eliminare le code SQS nella console).

 

tmt_send-fanout-event-notifications_7b

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_7b

c. Nella console Amazon SQS, seleziona le code Orders-for-Inventory e Orders-for-Analytics. Dalla Queue Actions (Azioni coda) seleziona Delete Queues (Elimina code).


tmt_send-fanout-event-notifications_7c

Fai clic per ingrandire l'immagine

tmt_send-fanout-event-notifications_7c

d. Viene visualizzata una finestra di dialogo Delete Queues (Elimina code). Fai clic su Yes, Delete 2 Queues (Sì, elimina 2 code). Le code vengono eliminate.

Ora puoi scollegarti dalla console Amazon SQS.

tmt_send-fanout-event-notifications_7d

(fai clic per ingrandire)

tmt_send-fanout-event-notifications_7d

Hai implementato uno scenario in fan-out usando Amazon SNS e Amazon SQS. Sei pronto per utilizzare Amazon SNS e Amazon SQS insieme per inviare messaggi alle applicazioni che richiedono la notifica immediata di un evento o a buffer di messaggi nelle code di Amazon SQS da elaborare più tardi per altre applicazioni.

 


Ora che hai appreso come implementare notifiche in fun-out tramite Amazon Simple Notification Service e Amazon Simple Queue Service, seleziona una delle seguenti opzioni per approfondire il tema della messaggistica sul cloud AWS.

Ulteriori informazioni

Ottieni una panoramica delle funzionalità, componenti e casi d'uso per gli argomenti di messaggio su Amazon Web Services (AWS). Visita la pagina Web di Amazon SNS »

Approfondisci

Scopri come abilitare applicazioni, utenti finali e dispositivi per l’invio e la ricezione immediata di notifiche dal cloud. Leggi la documentazione »

Guarda in azione

Scopri in che modo i clienti come Capital One utilizzano Amazon SQS e Amazon SNS per isolare e scalare le applicazioni. Guarda il webinar »

No