Filtern von veröffentlichten Nachrichten nach Thema mit Amazon SNS und Amazon SQS

TUTORIAL

Übersicht

In diesem Tutorial erfahren Sie, wie Sie das Feature zum Filtern von Nachrichten von Amazon Simple Notification Service (Amazon SNS) optimal nutzen. Das Feature zum Filtern von Nachrichten ermöglicht es Abonnenten eines SNS-Themas, nur die Teilmenge der Nachrichten zu diesem Thema zu empfangen, für die sie sich interessieren.

In unserem Beispiel besuchen die Benutzer eine Website, um Versicherungsangebote anzufordern. Diese Angebotsanfragen können sich auf Fahrzeugversicherungen (z. B. für Autos und Boote), Lebensversicherungen und andere Versicherungsarten (z. B. für Gebäude) beziehen. Wenn ein Benutzer ein Versicherungsangebot anfordert, wird die Anfrage an eine Reihe von Backend-Systemen weitergeleitet: Ein Verkaufssystem kümmert sich um die Fahrzeugversicherung für Autos und Boote, ein anderes Verkaufssystem kümmert sich um Lebensversicherungen und ein Analysesystem verarbeitet alle Angebotsanfragen.

Wie im Tutorial Senden von Fanout-Ereignisbenachrichtigungen werden wir ein Fanout-Messaging-Muster mit Amazon SNS und Amazon Simple Queue Service (Amazon SQS) verwenden, um die Website von den Backend-Systemen zu entkoppeln. Um die Ereignisbenachrichtigungen an das richtige Backend-System zu senden, könnten Sie für jede Art von Angebotsanfrage ein separates Thema erstellen und dann für Ihren Publisher eine Routing-Logik für Nachrichten hinzufügen. Diese Option kann jedoch zu übermäßig komplizierten Publishern, Themenproliferation und zusätzlichem Aufwand bei der Bereitstellung und Verwaltung Ihrer SNS-Themen führen. Amazon SNS-Nachrichtenfilterung ist viel einfacher!

In diesem Tutorial verwenden Sie Amazon SNS und Amazon SQS. Beide Services sind im kostenlosen Kontingent für AWS enthalten.

 Erfahrung mit AWS

Mittelstufenkurs

 Benötigte Zeit

30 Minuten

 Kosten der Fertigstellung (mit kostenlosen Metriken)

Kostenlos

 Kosten der Fertigstellung (mit erweiterten Metriken)

Die Preise können sich unterscheiden: 0,20 USD pro Million überwachter Objekte pro Monat ( Amazon S3-Preisseite)

 Erfordert

AWS-Konto und ein aufgefüllter Amazon S3-Bucket

 Verwendete Services

 Letzte Aktualisierung

23. August 2022

Implementierung

Schritt 1: Erstellen eines SNS-Themas

Ihr erster Schritt besteht darin, ein Amazon SNS-Thema zu erstellen, um Nachrichten zu veröffentlichen, wenn Angebotsanfragen auf einer Versicherungswebsite gestellt werden. Diese Leads können sich auf Autoversicherungen, Bootsversicherungen oder Lebensversicherungen beziehen.  

a. Öffnen Sie die AWS-Managementkonsole in einem neuen Browserfenster, sodass Sie diese schrittweise Anleitung geöffnet halten können. Wenn der Bildschirm vollständig geladen ist, geben Sie Ihren Benutzernamen und das Passwort ein, um zu beginnen. Geben Sie dann in die Suchleiste Benachrichtigung ein und wählen Sie „Einfacher Benachrichtungsservice“, um die Service-Konsole zu öffnen.


b. Wenn die Landing-Page der SNS-Konsole angezeigt wird, wählen Sie Start with an overview (Mit einer Übersicht beginnen) aus. Wenn Sie diese Seite nicht sehen, fahren Sie mit dem nächsten Schritt fort.

c. Wählen Sie im Navigationsbereich Topics (Themen).

d. Wählen Sie die Schaltfläche Create Topic (Thema erstellen).

e. Wählen Sie für Typ die Option Standard aus. Geben Sie im Feld Name „Insurance-Quote-Requests“ (Anfragen für Versicherungsangebote) ein, scrollen Sie dann nach unten und wählen Sie die Schaltfläche „Create Topic“ (Thema erstellen) aus.

f.  Das neue Thema wird auf der Detailseite Topic (Thema) angezeigt.

Schritt 2: Erstellen von Amazon SQS-Warteschlangen

Jedes Versicherungsverkaufssystem fragt Angebotsanfragen aus der entsprechenden SQS- Nachrichtenwarteschlange ab, die für das SNS-Thema abonniert ist.
 
Die erste Warteschlange bearbeitet sowohl Anfragen zu Auto- als auch zu Bootsversicherungen, die zweite bearbeitet Angebotsanfragen zu Lebensversicherungen, und die dritte fängt alle ab. Unabhängig vom Versicherungstyp fängt die dritte Warteschlange fängt alle Angebotsanfragen unabhängig vom Versicherungstp ab, um ein Analysesystem zu speisen. Diese Einstellungen werden als Filterrichtlinien für die SNS-Abonnements festgelegt.
 
In diesem Schritt erstellen Sie die drei Warteschlangen und abonnieren jede von ihnen für das SNS-Thema.

a. Öffnen Sie die Amazon SQS-Konsole in einem neuen Browserfenster. Wählen Sie Create queue (Warteschlange erstellen), wenn die Amazon SQS-Landingpage angezeigt wird. Andernfalls fahren Sie mit dem nächsten Schritt fort.

b. Lassen Sie auf der Seite Create queue (Warteschlange erstellen) Standard für Typ ausgewählt. Geben Sie Vehicle-Insurance-Quotes (Angebote-für-Fahrzeugversicherungen) in das Feld Name ein, scrollen Sie dann nach unten und wählen Sie die Schaltfläche „Create queue“ (Warteschlange erstellen).

c. Die neue Warteschlange wird auf der Seite mit den Queue details (Warteschlangendetails) angezeigt. Wählen Sie Queues (Warteschlangen) aus, um zur Landingpage Queues (Warteschlangen) zurückzukehren.

d. Wählen Sie die Schaltfläche Create queue (Warteschlange) erstellen und wiederholen Sie die Schritte 2b und 2c, um zwei weitere Warteschlangen mit den folgenden Namen zu erstellen: Life-Insurance-Quotes (Angebote-für-Lebensversicherungen) und All-Quotes (Alle-Angebote).

e.  Alle drei Warteschlangen werden jetzt in der SQS-Konsole angezeigt.

Schritt 3: Abonnieren von Themen für Warteschlangen

Nachdem Sie nun die drei SQS-Warteschlangen erstellt haben, müssen Sie sie für das SNS-Thema abonnieren, das neue Anfragen zu Versicherungsangeboten sendet.

a. Wählen Sie aus der Liste der Warteschlangen die Warteschlange All-Quotes (Alle Angebote) aus.

Wählen Sie Aktionen (Aktionen) und dann das Thema Subscribe to Amazon SNS (Amazon SNS abonnieren)

b. Das Dialogfeld Subscribe to a Topic (Thema abonnieren) wird angezeigt. Wählen Sie aus der Drop-down-Liste Specify an Amazon SNS topic available for this queue (Verfügbares SNS-Thema für diese Warteschlange auswählen) das Thema Insurance-Quote-Requests (Anfragen für Versicherungsangebote) aus, für das Sie Ihre drei Warteschlangen abonnieren werden. Da Sie das SNS-Thema vom gleichen Konto aus erstellt haben, wird es in der Liste angezeigt.

Wenn das SNS-Thema von einem anderen Konto erstellt wurde, können Sie es mit dem Feld „Topic ARN“ (Themen-ARN) abonnieren. Weitere Einzelheiten finden Sie in der Amazon SNS-Dokumentation oder in unserem Blogpost Cross-Account-Integration mit SNS.

c. Wählen Sie Save (Speichern) aus.

d. Die Warteschlange ist jetzt für das SNS-Thema abonniert. Wählen Sie Queues (Warteschlangen), um zur Seite Queues (Warteschlangen) zurückzukehren, und wiederholen Sie die Schritte a-c für die Warteschlangen Life-Insurance-Quotes (Angebote-für-Lebensversicherungen) und Vehicle-Insurance-Quotes (Angebote-für-Fahrzeugversicherungen).

Schritt 4: Zuweisen von Filterrichtlinien zu den SNS-Abonnements

Nun, da alle SNS- und SQS-Ressourcen erstellt wurden, sind Sie so weit, Filterrichtlinien für Ihre SNS-Abonnements festzulegen. Eine Filterrichtlinie ist ein einfaches JSON-Dokument, das als Attribut des SNS-Abonnements festgelegt wird und die Art der Benachrichtigung definiert, an der der Subscriber interessiert ist.

Abonnements ohne Filterrichtlinien erhalten alle Nachrichten, die zum SNS-Thema veröffentlicht werden, so dass Sie für dieses Szenario keine Filterrichtlinie für die Warteschlange All-Quotes festlegen müssen.

a. Kehren Sie in Ihrem anderen Browserfenster zur Amazon SNS-Konsole zurück und wählen Sie im Navigationsbereich Topics (Themen) aus, um alle Ihre Topics (Themen) in der Region aufzulisten.

Wählen Sie in der Liste den Themennamen Insurance-Quote-Requests (Anfragen für Versicherungsangebote) aus. 

b. Dadurch gelangen Sie zu der Themendetailsseite Insurance-Quote-Requests (Anfragen für Versicherungsangebote), auf der Sie alle SQS-Warteschlangen sehen können, die für dieses SNS-Thema abonniert sind. Wählen Sie die Warteschlange Vehicle-Insurance-Quotes (Angebote-für-Fahrzeugversicherungen) aus und klicken Sie dann auf Edit (Bearbeiten).

c. Dadurch gelangen Sie zur Seite Edit subscription (Abonnement bearbeiten). Wählen Sie den Pfeil links neben Subscription filter policy (Abonnementfilterrichtlinie) aus, und wählen Sie dann Enabled (Aktiviert) aus, um die Richtlinie zu bearbeiten.

d. Geben Sie auf dem angezeigten Dialogfeld im JSON-Editor das folgende JSON-Objekt ein:
{"insurance_type": ["car", "boat"]}

Wählen Sie Save changes (Änderungen speichern).

e. Es wird eine Bestätigungsmeldung angezeigt, die bestätigt, dass die Abonnementfilterrichtlinie gespeichert wurde. Klicken Sie auf Insurance-Quote-Requests (Anfragen für Versicherungsangebote), um zur Seite mit den Themendetails zurückzukehren.

f. Nun wiederholen Sie den Vorgang und fügen die Filterrichtlinie zur zweiten Warteschlange hinzu. Wählen Sie die Warteschlange Life-Insurance-Quotes (Angebote-für-Lebensversicherungen) aus und wählen Sie dann Edit (Bearbeiten) aus.

g. Wählen Sie den Pfeil links neben Subscription filter policy (Abonnementfilterrichtlinie) aus, und wählen Sie dann Enabled (Aktiviert) aus, um die Richtlinie zu bearbeiten.

h. Geben Sie auf dem angezeigten Dialogfeld im JSON-Editor das folgende JSON-Objekt ein:
{"insurance_type": ["life"]}

 
Wählen Sie Save changes (Änderungen speichern).

 

Sie brauchen für das Abonnement, das sich auf die Warteschlange All-Quotes (Alle-Angebote) bezieht, keine Filterrichtlinie festzulegen. Dieser Fehlen einer Richtlinie wird dazu führen, dass diese Warteschlange alle zu diesem Thema veröffentlichten Ereignisse auffängt.

Schritt 5: Veröffentlichen von Nachrichten für das Thema

Testen wir das einmal durch. In diesem Schritt können Sie neue Anfragen für Versicherungsangebote simulieren, die von Ihrer Website zur Leadgenerierung eingehen. Veröffentlichen Sie dazu Nachrichten zum Thema.

Sie werden Nachrichten mit verschiedenen Attributen veröffentlichen, sodass Sie den Nachrichtenfiltermechanismus von Amazon SNS in Aktion sehen können.

a. Wählen Sie auf der Themenseite Insurance-Quote-Requests (Anfragen für Versicherungsangebote) die Option Publish message (Nachricht veröffentlichen).

b. Erstellen Sie die erste Nachricht, indem Sie die folgenden Werte in das Formular eingeben:
 
Geben Sie unter Subject (Betreff)  Insurance Quote Request #1 ein.
 
Lassen Sie in der Nachrichtenstruktur die Option  Identical payload for all delivery protocols (Identische Nutzlast für alle Zustellprotokolle) ausgewählt.
 
Geben Sie in Message body to send to the endpoint (Nachrichtentext, der an den Endpunkt gesendet werden soll), den folgenden Text ein, der einen Antrag auf einen Kostenvoranschlag für eine Kfz-Versicherung darstellt:

2017 Volvo S60, Montreal

In Message attributes (Nachrichtenattribute):

  • Wählen Sie im Feld Type (Typ) String (Zeichenfolge) aus.
  • Geben Sie insurance_type (Versicherungstyp) im Feld Name (Name) ein.
  • Geben Sie car (Auto) im Feld Value (Wert) ein.

Wählen Sie Publish Message (Nachricht veröffentlichen).

c. Sie gelangen zurück zur Themenseite Insurance-Quote-Requests (Anfragen für Versicherungsangebote). Wählen Sie erneut Publish message (Nachricht veröffentlichen) aus.

d. Erstellen Sie eine zweite Nachricht mit den folgenden Werten:

Geben Sie unter Subject (Betreff)  Insurance Quote Request #2 ein.
 
Lassen Sie in der Nachrichtenstruktur die Option  Identical payload for all delivery protocols (Identische Nutzlast für alle Zustellprotokolle) ausgewählt.
 
Geben Sie in Message body to send to the endpoint (Nachrichtentext, der an den Endpunkt gesendet werden soll), den folgenden Text ein, der einen Antrag auf einen Kostenvoranschlag für eine Kfz-Versicherung darstellt:
 
Mann, 33 Jahre alt, Vancouver

In Message attributes (Nachrichtenattribute):

  • Wählen Sie im Feld „Type“ (Typ) String (Zeichenfolge) aus.
  • Geben Sie insurance_type (Versicherungstyp) im Feld „Name“ (Name) ein.
  • Geben Sie life (Leben) im Feld „Value“ (Wert) ein.

Wählen Sie Publish Message (Nachricht veröffentlichen).

e. Sie gelangen zurück zur Themenseite Insurance-Quote-Requests (Anfragen für Versicherungsangebote). Wählen Sie erneut Publish message (Nachricht veröffentlichen) aus.

f. Erstellen Sie eine dritte Nachricht mit den folgenden Werten:
 
Geben Sie unter Subject (Betreff)  Insurance Quote Request #3 (Anfrage für Versicherungsangebot #3) ein.
 
Lassen Sie in der Message structure (Nachrichtenstruktur) die Option  Identical payload for all delivery protocols (Identische Nutzlast für alle Zustellprotokolle) ausgewählt.
 
Geben Sie in Message body to send to the endpoint (Nachrichtentext, der an den Endpunkt gesendet werden soll), den folgenden Text ein, mit dem Sie einen Kostenvoranschlag für eine Gebäudeversicherung anfordern:

Townhouse, 1500 sq ft, Toronto (Stadthaus, 1500 sq ft, Toronto)

In Message attributes (Nachrichtenattribute):

  • Wählen Sie im Feld Type (Typ) String (Zeichenfolge) aus.
  • Geben Sie insurance_type (Versicherungstyp) im Feld Name (Name) ein.
  • Geben Sie home (Gebäude) im Feld Value (Wert) ein.

Wählen Sie Publish Message (Nachricht veröffentlichen).

Schritt 6: Verifizieren von Nachrichtenzustellungen

Es ist an der Zeit nachzuprüfen, ob die verschiedenen Tyoen von Versicherungsangebotsanfragen an die entsprechende Amazon SQS-Nachrichtenwarteschlange weitergeleitet wurden. Überprüfen Sie dazu die Zustellung der Nachrichten.

Sie werden sehen, dass eine abonnierende Amazon SQS-Warteschlange nur dann eine Nachricht erhalten hat, wenn das entsprechende Amazon SNS-Abonnement über eine Filterrichtlinie verfügt, die den Attributen dieser eingehenden Nachricht entspricht.
 
Sie werden auch feststellen, dass vor allem eine Warteschlange tatsächlich alle zum Thema veröffentlichten Nachrichten erhalten hat. Hierzu ist es gekommen, weil für dieses Abonnement keine Filterrichtlinie festgelegt war, was zu einem Catch-All-Verhalten geführt hat.

a. Kehren Sie zur Amazon SQS-Konsole zurück. Wählen Sie die Warteschlange Vehicle-Insurance-Quotes (Angebote-für-Fahrzeugversicherungen) und anschließend Send and receive messages (Nachrichten senden und empfangen) aus.

b. Wählen Sie „Poll for messages“ (Nachrichten abfragen) aus.

c. Beachten Sie, dass an diese Warteschlange nur eine einzige Nachricht übermittelt wurde, die sich auf dieses Gebäudeversicherungsangebot bezieht (Insurance Quote Request #1) (Anfrage für ein Versicherungsangebot #1). Sobald der Abfragevorgang abgeschlossen ist, können Sie die in die Warteschlange verschobene Nachricht anzeigen, indem Sie die Nachricht unter Messages (Nachrichten) auswählen.

d. Lesen Sie die Nachricht durch und wählen Sie anschließend Done (Fertig), um das Dialogfeld zu schließen.

e. Wiederholen Sie den Vorgang für die zweite Warteschlange. Wählen Sie die Warteschlange Life-Insurance-Quotes(Angebote-für-Lebensversicherungen) und anschließend Send and receive messages (Nachrichten senden und empfangen) aus.

f. Wählen Sie „Poll for messages“ (Nachrichten abfragen) aus.

g. Beachten Sie, dass an diese Warteschlange nur eine einzige Nachricht übermittelt wurde, die sich auf dieses Lebensversicherungsangebot bezieht (Insurance Quote Request #2). Sobald der Abfragevorgang abgeschlossen ist, können Sie die in die Warteschlange verschobene Nachricht anzeigen, indem Sie die Nachricht unter Messages (Nachrichten) auswählen.

h. Lesen Sie die Nachricht durch und wählen Sie anschließend Done (Fertig), um das Dialogfeld zu schließen.

i. Wählen Sie abschließend zuerst die Warteschlange All-Quotes (Alle-Angebote) aus und wählen Sie dann Send and receive messages (Nachrichten senden und empfangen) aus.

j. Wählen Sie „Poll for messages“ (Nachrichten abfragen) aus.

k. Beachten Sie, dass alle drei Nachrichten in diese Warteschlange geschoben wurden (Insurance Quote Requests #1, #2, and #3) (Versicherungsangebotsanfragen #1, #2 und #3).

Schritt 7: Bereinigen der Ressourcen

In diesem Schritt löschen Sie die Ressourcen, die Sie für dieses Tutorial erstellt haben, darunter ein Thema, Abonnements und Warteschlangen. Um unerwünschte Gebühren zu vermeiden, hat es sich dabei bewährt, Ressourcen zu löschen, die Sie nicht mehr verwenden.

a. Wählen Sie im Navigationsbereich der Amazon SNS-Konsole zuerst Topics (Themen) und anschließend den Link zum Thema Insurance-Quote-Requests (Anfragen für Versicherungsangebote) aus.

b. Wählen Sie auf der Themendetailseite Insurance-Quote-Requests (Anfragen für Versicherungsangebote) jedes der Abonnements aus und wählen Sie dann Delete (Löschen).

c. Wählen Sie im Dialogfeld Delete (Löschen), um den Löschvorgang zu bestätigen.

d. Wählen Sie auf der Themenseite Insurance-Quote-Requests (Anfragen für Versicherungsangebote) Delete (Löschen).

e. Bestätigen Sie den Löschvorgang, indem Sie im Dialogfeld delete me (Lösche mich) eingeben und auf Delete (Löschen) klicken.

f. Kehren Sie zur Amazon SQS-Konsole zurück. Wählen Sie zuerst die verschiedenen, in diesem Tutorial verwendeten Warteschlangen aus und dann Delete (Löschen) aus.

g. Bestätigen Sie den Löschvorgang, indem Sie im Dialogfeld „delete“ (löschen) eingeben und auf Delete (Löschen) klicken.

h.  Sie können sich nun von der AWS-Managementkonsole abmelden.

Zusammenfassung

Sie können jetzt den Nachrichtenfilter auf Amazon SNS verwenden, um einfachere und besser optimierte Pub/Sub-Architekturen zu erstellen.

Nachrichtenfilter gestatten es den Abonnenten von Amazon SNS-Themen, selektiv nur eine Untermenge der Nachrichten zu erhalten, an denen sie interessiert sind, und nicht alle Nachrichten, die zu einem Thema veröffentlicht werden. Auf diese Weise können Sie die Nachrichtenfilterlogik von Ihren Abonnenten- und die Nachrichtenweiterleitungslogik von Ihren Publisher-Systemen auslagern.

War diese Seite hilfreich?

Nächste Schritte