Filtro dei messaggi pubblicati negli argomenti con Amazon SNS e Amazon SQS

TUTORIAL

Panoramica

Questo tutorial illustra come utilizzare la funzione di filtro dei messaggi di Amazon Simple Notification Service (Amazon SNS). La funzione di filtro dei messaggi consente agli iscritti a un argomento SNS di ricevere solo il sottoinsieme di messaggi dell'argomento a cui sono interessati.

Nel nostro esempio, gli utenti visitano un sito Web per richiedere preventivi assicurativi. Queste richieste di preventivi possono riguardare l'assicurazione per un veicolo (ad esempio per auto e natanti), l'assicurazione sulla vita o altri tipi di assicurazione (ad esempio le polizze casa). Quando un utente richiede un preventivo assicurativo, la richiesta viene inoltrata a una serie di sistemi di back-end: un sistema di vendita gestisce l'assicurazione dei veicoli per auto e natanti, un altro sistema di vendita gestisce l'assicurazione sulla vita e un sistema di analisi elabora tutte le richieste di preventivo.

Come abbiamo visto nel Tutorial su come Inviare notifiche di eventi in fanout, adotteremo un modello di messaggistica fanout utilizzando Amazon SNS e Amazon Simple Queue Service (Amazon SQS) per disaccoppiare il sito Web dai sistemi di back-end. Per fare arrivare le notifiche di eventi al sistema di back-end corretto, puoi creare un argomento distinto per ciascun tipo di richiesta di preventivo, quindi aggiungere la logica di instradamento dei messaggi all’editore (publisher). Tuttavia, questa opzione può avere come esito entità di pubblicazione eccessivamente complicate, proliferazione degli argomenti e costi di esercizio aggiuntivi nel provisioning e nella gestione degli argomenti SNS. Il filtro dei messaggi Amazon SNS è molto più semplice.

In questo tutorial utilizzerai Amazon SNS e Amazon SQS. Entrambi i servizi sono compresi nel piano gratuito AWS.

 Esperienza AWS

Intermedio

 Tempo per il completamento

30 minuti

 Costo per il completamento (con metriche gratuite)

Gratis

 Costo per il completamento (con metriche avanzate)

I prezzi possono variare: 0,20 USD per milione di oggetti monitorati al mese ( pagina dei prezzi di Amazon S3)

 Requisiti

Account AWS e bucket Amazon S3 popolato

 Servizi utilizzati

 Ultimo aggiornamento

23 agosto 2022

Implementazione

Passaggio 1: creazione di un argomento SNS

Il primo passaggio consiste nel creare un argomento Amazon SNS per pubblicare i messaggi ogni volta che vengono presentate delle richieste di preventivo su un sito Web di assicurazioni. Questi potenziali clienti possono essere correlati a polizza auto, polizza natanti o polizza vita.  

a. Apri la Console di gestione AWS in una nuova finestra del browser, tenendo aperta questa guida dettagliata. Una volta caricata la schermata, inserisci nome utente e password per iniziare. Quindi, digita notification nella barra di ricerca e seleziona Simple Notification Service per aprire la console del servizio.


b. Se viene visualizzata la pagina di destinazione della console SNS, scegli Inizia da panoramica. Se non visualizzi questa pagina, vai al passaggio successivo.

c. Nel riquadro di navigazione, scegli Argomenti.

d. Scegli il pulsante Crea argomento.

e. Per Tipo, seleziona Standard. Nel campo Nome, inserisci Richieste-preventivi-assicurativi, quindi scorri verso il basso e scegli il pulsante Crea argomento.

f.  Il nuovo argomento viene visualizzato nella pagina dei Dettagli dell'argomento.

Passaggio 2: creazione delle code Amazon SQS

Ogni sistema di vendita di assicurazioni esegue il polling delle richieste di preventivo della propria coda di messaggi SQS corrispondente per cui è stata effettuata la sottoscrizione a questo argomento SNS.
 
La prima coda gestisce le richieste di preventivo sia per polizza auto sia per polizze natanti, la seconda gestisce le richieste di polizza vita e la terza comprende tutto. A prescindere dal tipo di polizza, la terza coda comprende tutte le richieste di preventivo per alimentare un sistema di analisi. Queste preferenze verranno impostate come policy di filtro nelle sottoscrizioni SNS.
 
In questo passaggio, imparerai a creare le tre code e a sottoscrivere ciascuna all'argomento SNS.

a. Apri la console di Amazon SQS in una nuova finestra del browser. Se viene visualizzata la pagina di destinazione di Amazon SQS, scegli Crea coda. Altrimenti, vai al passaggio successivo.

b. Nella pagina Crea coda, lascia selezionato Standard per Tipo. Inserisci Preventivi-assicurativi-auto nel campo Nome, quindi scorri verso il basso e scegli il pulsante Crea coda.

c. La nuova coda viene visualizzata nella pagina dei Dettagli della coda. Seleziona Code per tornare alla pagina di destinazione delle Code.

d. Scegli il pulsante Crea coda e ripeti i passaggi 2b e 2c per creare due code aggiuntive utilizzando i seguenti nomi: Preventivi-assicurativi-vita e Tutti-i-preventivi.

e.  Tutte e tre le code sono ora elencate nella console Amazon SQS.

Passaggio 3: sottoscrizione delle code all'argomento

Ora che hai creato tre code SQS, devi sottoscriverle all'argomento SNS che trasmette nuove richieste di preventivi assicurativi.

a. Dall'elenco delle code, seleziona la coda Tutti-i-preventivi.

Scegli Operazioni, quindi seleziona Sottoscrivi a un argomento Amazon SNS.

b. Viene visualizzata la finestra di dialogo Sottoscrivi a un argomento Amazon SNS. Dall'elenco a discesa Specifica un argomento Amazon SNS disponibile per questa coda, seleziona l'argomento Richieste-preventivi-assicurativi a cui effettuerai la sottoscrizione per le tue tre code. Poiché l'argomento SNS è stato creato dallo stesso account, viene visualizzato nell'elenco.

Se l'argomento SNS è stato creato da un altro account, puoi effettuarvi la sottoscrizione utilizzando il campo ARN argomento. Per ulteriori dettagli, consulta la documentazione di Amazon SNS o il post Integrazione di più account con SNS sul nostro blog.

c. Scegli Salva.

d. La coda è ora sottoscritta all'argomento SNS. Scegli Code per tornare alla pagina Code e ripetere i passaggi a-c per le code Preventivi-assicurativi-vita e Preventivi-assicurativi-auto.

Passaggio 4: assegnazione delle policy di filtro alle sottoscrizioni SNS

Ora che sono state create tutte le risorse Amazon SNS e Amazon SQS, è possibile assegnare le policy di filtro alle sottoscrizioni SNS. Una policy di filtro è un semplice documento JSON, impostato come attributo della sottoscrizione SNS, che definisce il tipo di notifica a cui chi ha effettuato la sottoscrizione (subscriber) è interessato.

Le sottoscrizioni senza policy di filtro riceveranno tutti i messaggi pubblicati nell'argomento SNS, quindi per questo scenario non occorre impostare una policy di filtro per la coda Tutti-i-preventivi.

a. Torna alla console Amazon SNS nell'altra finestra del browser e seleziona Argomenti nel pannello di navigazione per elencare tutti gli Argomenti nella regione.

Seleziona il nome dell'argomento Richieste-preventivi-assicurativi nell'elenco. 

b. Così facendo accederai alla pagina dei dettagli dell'argomento Richieste-preventivi-assicurativi, dove potrai visualizzare tutte le code SQS che hanno effettuato la sottoscrizione a questo argomento SNS. Seleziona la coda Preventivi-assicurativi-auto, quindi scegli Modifica.

c. Così facendo accederai alla pagina Modifica sottoscrizione. Seleziona la freccia a sinistra della Policy di filtro per le sottoscrizioni, quindi seleziona Abilitata per modificare la policy.

d. Nella finestra di dialogo visualizzata, inserici il seguente oggetto JSON nell'editor JSON:
{"insurance_type": ["car", "boat"]}

Scegli Salva le modifiche.

e. Viene visualizzato un messaggio che conferma che la policy del filtro della sottoscrizione è stata salvata con successo. Fai clic su Richieste-preventivi-assicurativi per tornare alla pagina dei dettagli dell'argomento,

f. Ora potrai ripetere il processo e aggiungere la policy di filtro alla seconda coda. Seleziona la coda Preventivi-assicurativi-vita e scegli Modifica.

g. Seleziona la freccia a sinistra della Policy di filtro per le sottoscrizioni, quindi seleziona Abilitata per modificare la policy.

h. Nella finestra di dialogo visualizzata, inserici il seguente oggetto JSON nell'editor JSON:
{"insurance_type": ["life"]}

 
Segli Salva le modifiche.

 

Non è necessario impostare alcuna policy di filtro per la sottoscrizione relativa alla coda Tutti-i-preventivi. La mancanza di questa policy farà in modo che la coda riceva tutti gli eventi pubblicati in questo argomento.

Passaggio 5: pubblicazione dei messaggi nell'argomento

Mettiamolo alla prova. In questo passaggio, sarai in grado di simulare nuove richieste di preventivo assicurativo in arrivo dal tuo sito Web principale di generazione tramite la pubblicazione di messaggi nell'argomento.

Pubblicherai i messaggi con attributi diversi, affinché tu possa vedere in azione il meccanismo di filtro dei messaggi di Amazon SNS.

a. Nella pagina degli argomenti Richieste-preventivi-assicurativi, scegli Pubblica messaggio.

b. Crea il primo messaggio inserendo i seguenti valori nel modulo:
 
In  Oggetto, inserisci:  Richiesta di preventivo assicurativo n. 1.
 
In  Struttura del messaggio, lascia selezionato Payload identico per tutti i protocolli di consegna.
 
In  Corpo del messaggio da inviare all'endpoint, inserisci il testo seguente per rappresentare una richiesta di preventivo di polizza auto:

2017 Volvo S60, Montreal

In Attributi del messaggio:

  • Seleziona Stringa nel campo Tipo
  • Inserisci insurance_type nel campo Nome
  • Inserisci auto nel campo Valore

Fai clic su Pubblica messaggio.

c. Torni alla pagina degli argomenti Richieste-preventivi-assicurativi. Scegli di nuovo Pubblica messaggio.

d. Crea un secondo messaggio utilizzando i seguenti valori:

In Oggetto, inserisci Richiesta di preventivo assicurativo n. 2
 
In  Struttura del messaggio, lascia selezionato Payload identico per tutti i protocolli di consegna.
 
In  Corpo del messaggio da inviare all'endpoint, inserisci il testo seguente per rappresentare una richiesta di preventivo di polizza auto:
 
Maschio, 33 anni, Vancouver

In Attributi del messaggio:

  • Seleziona Stringa nel campo Tipo
  • Inserisci insurance_type nel campo Nome
  • Inserisci vita nel campo Valore

Fai clic su Pubblica messaggio.

e. Torni alla pagina degli argomenti Richieste-preventivi-assicurativi. Scegli di nuovo Pubblica messaggio.

f. Crea un terzo messaggio utilizzando i seguenti valori:
 
In Oggetto, inserisci Richiesta di preventivo assicurativo n. 3
 
In  Struttura del messaggio, lascia selezionato Payload identico per tutti i protocolli di consegna.
 
In  Corpo del messaggio da inviare all'endpoint, inserisci il testo seguente per rappresentare una richiesta di preventivo di polizza casa:

Casa a schiera, 140 mq, Toronto

In Attributi del messaggio:

  • Seleziona Stringa nel campo Tipo
  • Inserisci insurance_type nel campo Nome
  • Inserisci casa nel campo Valore

Fai clic su Pubblica messaggio.

Passaggio 6: verificare il recapito dei messaggi

È arrivato il momento di verificare che ogni tipo di richiesta di preventivo assicurativo sia stata indirizzata alla coda del messaggio Amazon SQS corrispondente, ispezionando i recapiti dei messaggi che si sono verificati.

Si vedrà che una coda Amazon SQS abbonata ha ricevuto un messaggio solo se la corrispondente sottoscrizione Amazon SNS aveva una policy di filtro corrispondente agli attributi del messaggio in arrivo.
 
Inoltre, si vedrà che una coda in particolare ha effettivamente ricevuto tutti i messaggi pubblicati nell'argomento. Questo accade perché per questa sottoscrizione non è stata impostata alcuna policy di filtro, il che ha comportato un comportamento di tipo “raccogli tutto”.

a. Torna alla console di Amazon SQS. Seleziona la coda Preventivi-assicurativi-auto e scegli Invia e ricevi messaggi.

b. Scegli Esegui il polling dei messaggi.

c. Soltanto un messaggio è stato inserito in questa coda, relativo al preventivo di polizza auto (Richiesta di preventivo assicurativo n. 1). Una volta completato il processo di polling, visualizza il messaggio inserito nella coda selezionandolo in Messaggi.

d. Visualizza il messaggio, quindi scegli Fine per chiudere la finestra di dialogo.

e. Ripeti il processo per la seconda coda. Seleziona la coda Preventivi-assicurativi-vita e scegli Invia e ricevi messaggi.

f. Scegli Esegui il polling dei messaggi.

g. Soltanto un messaggio è stato spinto in questa coda, relativa al preventivo di polizza vita (Richiesta di preventivo assicurativo n. 2). Una volta completato il processo di polling, visualizza il messaggio inserito nella coda selezionandolo in Messaggi.

h. Visualizza il messaggio, quindi scegli Fine per chiudere la finestra di dialogo.

i. Infine, seleziona la coda Tutti-i-preventivi e scegli Invia e ricevi messaggi.

j. Scegli Esegui il polling dei messaggi.

k. In questo caso, tutti e tre i messaggi sono stati spinti in questa coda (Richiesta di preventivo assicurativo n. 1, 2 e 3).

Passaggio 7: eliminazione delle risorse

In questo passaggio, eliminerai le risorse che hai creato per questo tutorial, che includono un argomento, le sottoscrizioni e le code. Per evitare di ricevere addebiti non desiderati, è una best practice consigliata eliminare le risorse non utilizzate.

a. Nel pannello di navigazione della console Amazon SNS, seleziona Argomenti, quindi scegli il link all'argomento Richieste-preventivi-assicurativi.

b. Nella pagina dei dettagli dell'argomento Richieste-preventivi-assicurativi, seleziona ciascuna sottoscrizione e scegli Elimina.

c. Fai clic su Elimina nella finestra di dialogo per confermare l'eliminazione.

d. Nella pagina dei dettagli dell'argomento Richieste-preventivi-assicurativi, seleziona Elimina.

e. Per confermare l'eliminazione, digita delete me nella finestra di dialogo, quindi scegli Elimina.

f. Torna alla console di Amazon SQS. Seleziona ciascuna delle code utilizzate in questo tutorial e scegli Elimina.

g. Per confermare l'eliminazione, digita "eliminami" nella finestra di dialogo, quindi scegli Elimina.

h.  Ora, puoi disconnetterti dalla console di gestione AWS.

Conclusioni

Ora puoi utilizzare il filtro dei messaggi in Amazon SNS per creare architetture pub/sub più semplici e lineari.

Questa funzionalità consente a coloro che hanno effettuato la sottoscrizione agli argomenti di Amazon SNS di ricevere in modo selettivo solo un sottoinsieme dei messaggi a cui sono interessati, invece di ricevere tutti i messaggi pubblicati per un argomento. Ciò ti consente di scaricare la logica di filtro dei messaggi dai tuoi sottoscritti e la logica di instradamento dei messaggi dai tuoi sistemi di pubblicazione.

Questa pagina è stata utile?

Passaggio successivi