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 e verrà inoltre attivata l'elaborazione asincrona in parallelo dei messaggi da parte degli iscritti 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 usati in questo tutorial sono inclusi nel piano gratuito AWS.

Per inviare notifiche di eventi in fan-out è necessario avere un account AWS

Crea un account gratuito

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

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

1a-sns-console-home

(fai clic per ingrandire l'immagine)

1a-sns-console-home

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 Nuovi ordini nella casella per assegnare un nome all’argomento, quindi fai clic su Crea argomento.

2a-topic-create-wf

(fai clic per ingrandire l'immagine)

2a-topic-create-wf

b. La pagina sui dettagli dell’argomento conferma che quest’ultimo è stato creato con successo.

2b-topic-create-confirm

(fai clic per ingrandire l'immagine)

2b-topic-create-confirm

Ora che hai creato l’argomento con Amazon SNS, creerai delle code Amazon SQS da iscrivere 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 di 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 prossima fase.

 

tmt_send-fanout-event-notifications_3a

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_3a

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 una nuova coda, digita Ordini-per-inventario nel campo del Nome della coda. Lascia la selezione Coda standard e fai clic su Crea rapidamente 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 nell'elenco delle code. Ora, creerai una seconda coda per gestire l’analisi degli ordini.

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

tmt_send-fanout-event-notifications_3c

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_3c

d. Digita Ordini-per-analisi nel campo del Nome della coda e fai clic su Crea rapidamente una coda

tmt_send-fanout-event-notifications_3d

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_3d

e. Questa nuova coda appare ora nella lista delle code.

tmt_send-fanout-event-notifications_3e

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_3e

Ora che hai creato due code Amazon SQS, devi iscriverle 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. Dalle Azioni per code, seleziona Iscrivi code all’argomento SNS.

tmt_send-fanout-event-notifications_4a

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_4a

b. Viene mostrata la scheda di dialogo Iscrivi a un argomento. Dalla lista a cascata Scegli un argomento, seleziona il tuo argomento Amazon SNS Nuovi-ordini.

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 maggiori dettagli, consulta la documentazione di Amazon SNS.

Lascia invariata la regione dell’argomento e fai clic su Iscrivi.  

tmt_send-fanout-event-notifications_4b

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_4b

c. Viene mostrata la scheda di dialogo 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 tue code sono ora iscritte 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 Nuovi ordini nella console di Amazon SNS, fai clic su Pubblica messaggio.

 

5a-topic-create-confirm

(fai clic per ingrandire l'immagine)

5a-topic-create-confirm

b. Appare la paginaPubblica messaggio sull’argomento. Nella casella Oggetto, digita “Ordine 123-4567890-1234567”. Nel campo del Messaggio, inserisci il testo seguente per rappresentare un ordine fittizio:

1 x widget a 29,99 USD

2 x cavi widget a 4,99 USD

Fai clic su Pubblica messaggio. Appare ora una scheda di dialogo per la conferma.

 

5b-sns-send-message-wf

(fai clic per ingrandire l'immagine)

5b-sns-send-message-wf

Una volta che viene pubblicato un nuovo messaggio, Amazon SNS lo invierà a ogni endpoint iscritto 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. Dal menu a cascata Azioni per code, seleziona 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 Inizia polling per messaggi.


tmt_send-fanout-event-notifications_6b

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_6b

c. Compare la scheda di dialogo Visualizza/Elimina messaggi per Ordini-per-inventario.

tmt_send-fanout-event-notifications_6c

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_6c

d. Nella colonna Corpo, fai clic su Maggiori dettagli. La casella Dettagli messaggio contiene un documento JSON con l’oggetto e il messaggio che hai pubblicato sull’argomento.  

In questo modo, hai confermato che la coda Ordini-per-inventario ha ricevuto la notifica del nuovo ordine dall’argomento Nuovi ordini.  

Fai clic su Chiudi.

 

tmt_send-fanout-event-notifications_6d

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_6d

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.

 

tmt_send-fanout-event-notifications_6e

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_6e

f. Ripeti le fasi da 6a a 6e per confermare che anche la coda Ordini-per-analisi abbia 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 che hai creato per questo tutorial, che includono le iscrizioni all’argomento, gli argomenti e le code. Per evitare di ricevere addebiti non desiderati, è una best practice consigliata eliminare le risorse non utilizzate.


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

Seleziona l’argomento Nuovi ordini.

Fai clic su Elimina per eliminare gli argomenti.

 

7a

(fai clic per ingrandire l'immagine)

7a

b. Appare la finestra di dialogo di conferma Elimina. Digita cancellami nella finestra di dialogo e fai clic su Elimina. L’argomento e le sue iscrizioni vengono eliminate. Ora, puoi chiudere la finestra del browser con SNS (ma non disconnetterti, poiché dovrai eliminare le code nella console di SQS).

7b

(fai clic per ingrandire l'immagine)

7b

c. Nella console di Amazon SQS, seleziona le code Ordini-per-inventario e Ordini-per-analisi. Dalle Azioni per code, seleziona Elimina code.


tmt_send-fanout-event-notifications_7c

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_7c

d. Appare la schermata di dialogo Elimina code. Fai clic su Sì, elimina 2 code. Le code vengono eliminate.

Ora, puoi disconnetterti dalla console di Amazon SQS.

tmt_send-fanout-event-notifications_7d

(fai clic per ingrandire l'immagine)

tmt_send-fanout-event-notifications_7d

Hai appena implementato uno scenario di fan-out utilizzando Amazon SNS e Amazon SQS. Ora sei pronto per 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.

 


Ora che hai imparato come implementare le notifiche di messaggi in fan-out utilizzando Amazon Simple Notification Service e Amazon Simple Queue Service, scegli una delle seguenti opzioni per approfondire l’invio di messaggi sul cloud in AWS.

Ulteriori informazioni

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

Approfondisci

Esplora come permettere ad applicazioni, utenti finali e dispositivi di inviare e ricevere notifiche istantaneamente dal cloud. Consulta la documentazione »

Guardalo in azione

Scopri come clienti quali Capital One utilizzano Amazon SQS e Amazon SNS per separare e scalare applicazioni. Guarda il webinar »

No