Questo tutorial mostra 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 a un molteplice numero di iscritti così non sarà più necessario verificare o eseguire il polling periodicamente per gli 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 »

 


a. Fai clic qui e la Console di gestione AWS si aprirà in una nuova finestra del browser, così potrai tenere aperta questa guida. Quando la schermata si carica, 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)

tmt_send-fanout-event-notifications_1a

b. Se viene visualizzata la pagina principale della console SNS, fai clic su Get Started Now (Inizia ora).

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)

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)

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)

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)

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)

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)

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)

tmt_send-fanout-event-notifications_3d

e. La nuova coda ora appare nell’elenco.

tmt_send-fanout-event-notifications_3e

(fai clic per ingrandire)

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)

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 Rgion (Regione dell’argomento) invariato, e fai clic su Subscribe (Iscriviti).

tmt_send-fanout-event-notifications_4b

(fai clic per ingrandire)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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 »

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.

No