

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Strategien zur Reihenfolge und Deduplizierung von Nachrichten mithilfe von Amazon SNS FIFO-Themen
<a name="sns-fifo-topics"></a>

[Dieses Thema enthält Informationen zu den Merkmalen und Funktionen der Amazon SNS FIFO (First-In-First-Out) -Themen und darüber, wie sie in Amazon SQS FIFO-Warteschlangen integriert werden.](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html) Sie erfahren, wie Sie diese Services zusammen verwenden können, um eine strikte Nachrichtenreihenfolge und Deduplizierung sicherzustellen, was für Anwendungen, die Datenkonsistenz erfordern, unerlässlich ist. Dieser Inhalt behandelt die spezifischen Anwendungsfälle, in denen Amazon SNS FIFO-Themen von Vorteil sind, und bietet Einblicke in Szenarien, in denen Nachrichtenreihenfolge und Eindeutigkeit entscheidend sind.

Außerdem erfahren Sie mehr über die technischen Details der Reihenfolge und Gruppierung von Nachrichten und wie sich diese auf die Nachrichtenzustellung auswirken. Im Thema Nachrichtendeduplizierung werden die Mechanismen erläutert, mit denen doppelte Nachrichten verhindert werden, sodass sichergestellt wird, dass jede Nachricht nur einmal verarbeitet wird. Darüber hinaus erfahren Sie mehr über Nachrichtenfilterung, Sicherheit und Beständigkeit, die für die Aufrechterhaltung der Integrität und Zuverlässigkeit Ihres Messaging-Systems wichtig sind. Dieser Inhalt enthält auch Informationen zur Archivierung und Wiedergabe von Nachrichten und bietet Strategien für die Verwaltung von Nachrichtenverläufen. Praktische Codebeispiele helfen Ihnen auch bei der Implementierung dieser Funktionen in Ihren eigenen Anwendungen und vermitteln Ihnen praktische Erfahrungen mit Amazon SNS FIFO-Themen und deren Integration in Amazon SQS FIFO-Warteschlangen.

# FIFO-Themen mit hohem Durchsatz in Amazon SNS
<a name="fifo-high-throughput"></a>

FIFO-Themen mit hohem Durchsatz in Amazon SNS verwalten effizient einen hohen Nachrichtendurchsatz bei gleichzeitiger Einhaltung einer strikten Nachrichtenreihenfolge und gewährleisten so Zuverlässigkeit und Skalierbarkeit für Anwendungen, die zahlreiche Nachrichten verarbeiten. Diese Lösung ist ideal für Szenarien, in denen sowohl ein hoher Durchsatz als auch eine geordnete Nachrichtenzustellung erforderlich sind. Um den Nachrichtendurchsatz mithilfe von FIFO-Themen mit hohem Durchsatz zu verbessern, wird empfohlen, die Anzahl der Nachrichtengruppen zu erhöhen. Weitere Informationen zu Nachrichtenkontingenten mit hohem Durchsatz finden Sie unter [Amazon SNS SNS-Servicekontingenten](https://docs.aws.amazon.com/general/latest/gr/sns.html) in der *Allgemeine Amazon Web Services-Referenz*.

## Anwendungsfälle für hohen Durchsatz bei Amazon SNS FIFO-Themen
<a name="fifo-topic-use-cases"></a>

Die folgenden Anwendungsfälle beleuchten die vielfältigen Anwendungsmöglichkeiten von FIFO-Themen mit hohem Durchsatz und verdeutlichen deren Wirksamkeit in allen Branchen und Szenarien:
+ **Datenverarbeitung in Echtzeit:** Anwendungen, die sich mit Echtzeit-Datenströmen befassen, wie z. B. die Ereignisverarbeitung oder die Erfassung von Telemetriedaten, können von FIFO-Themen mit hohem Durchsatz profitieren, um den kontinuierlichen Zustrom von Nachrichten zu bewältigen und gleichzeitig deren Reihenfolge für eine genaue Analyse beizubehalten.
+ **E-Commerce-Auftragsabwicklung: Auf** E-Commerce-Plattformen, auf denen es entscheidend ist, die Reihenfolge der Kundentransaktionen aufrechtzuerhalten, stellen FIFO-Themen mit hohem Durchsatz sicher, dass Bestellungen auch während der Haupteinkaufssaison sequentiell und ohne Verzögerungen geliefert werden.
+ **Finanzdienstleistungen:** Finanzinstitute, die hochfrequente Handels- oder Transaktionsdaten verarbeiten, verlassen sich auf FIFO-Themen mit hohem Durchsatz, um Marktdaten und Transaktionen mit minimaler Latenz zu verarbeiten und gleichzeitig die strengen regulatorischen Anforderungen für die Bestellung von Nachrichten einzuhalten.
+ **Medienstreaming: Streaming-Plattformen** und Medienvertriebsdienste nutzen FIFO-Themen mit hohem Durchsatz, um die Bereitstellung von Mediendateien und Streaming-Inhalten zu verwalten und so ein reibungsloses Wiedergabeerlebnis für Benutzer zu gewährleisten und gleichzeitig die richtige Reihenfolge der Inhaltsbereitstellung beizubehalten

## Partitionen und Datenverteilung für hohen Durchsatz für Amazon SNS FIFO-Themen
<a name="fifo-topic-partitians-and-data-distribution"></a>

Bei Themen mit hohem Durchsatz verteilt Amazon SNS FIFO-Themendaten auf mehrere Partitionen. Eine Partition ist eine Kapazitätszuweisung für ein Thema, die automatisch über mehrere Availability Zones innerhalb einer repliziert wird. AWS-Region Sie verwalten keine Partitionen. Stattdessen verwaltet Amazon SNS automatisch Partitionen in Ihrem Namen, basierend auf der Eingangsrate.

Bei FIFO-Themen ändert Amazon SNS die Anzahl der Partitionen in einem Thema in den folgenden Situationen:
+ Wenn sich die aktuelle Veröffentlichungsrate dem Niveau nähert oder übersteigt, das die vorhandenen Partitionen unterstützen können, werden zusätzliche Partitionen zugewiesen, bis das Thema das regionale Kontingent erreicht. Informationen zu Kontingenten finden Sie unter [Amazon SNS SNS-Servicekontingente](https://docs.aws.amazon.com/general/latest/gr/sns.html) in der *Allgemeine Amazon Web Services-Referenz*.
+ Wenn die aktuellen Partitionen wenig ausgelastet sind, kann die Anzahl der Partitionen reduziert werden.

Die Partitionsverwaltung wird automatisch im Hintergrund ausgeführt und ist für Ihre Anwendungen transparent. Ihr Thema und Ihre Nachrichten sind jederzeit verfügbar.

**Anmerkung**  
Eine vorübergehende Drosselung der API für [Veröffentlichungen](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) kann auftreten, wenn Sie plötzlich und deutlich mehr Besucher zu Ihrem Thema aufrufen, während Sie gleichzeitig ein Vielfaches des üblichen Volumens versenden. Diese Drosselung kann bis zur Dauer des Deduplizierungsfensters andauern, während das Thema entsprechend dem erhöhten Traffic skaliert wird.

## Verteilen von Daten nach Nachrichtengruppen IDs
<a name="fifo-topic-message-group-ids"></a>

Wenn eine Nachricht zu einem FIFO-Thema veröffentlicht wird, verwendet Amazon SNS den Wert der Nachrichtengruppen-ID jeder Nachricht als Eingabe für eine interne Hash-Funktion. Der Ausgabewert der Hash-Funktion bestimmt, welche Partition die Nachricht verarbeitet. Eine oder mehrere Nachrichtengruppen IDs können von einer bestimmten Partition verarbeitet werden.

**Anmerkung**  
Amazon SNS ist für die gleichmäßige Verteilung von Elementen auf die Partitionen eines FIFO-Themas optimiert, unabhängig von der Anzahl der Partitionen. AWS empfiehlt die Verwendung einer Nachrichtengruppe IDs , die eine große Anzahl unterschiedlicher Werte haben kann. 

## Aktivieren Sie einen hohen Durchsatz für Ihr Amazon SNS FIFO-Thema
<a name="enable-high-throughput-on-fifo-topic"></a>

Standardmäßig sind Amazon SNS FIFO-Themen für die Deduplizierung auf Themenebene konfiguriert. Dies wird durch das Themenattribut gesteuert, das auf [https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)eingestellt ist, `Topic` und sie haben eingeschränktere Durchsatzquoten, siehe [Amazon](https://docs.aws.amazon.com/general/latest/gr/sns.html) SNS SNS-Servicekontingente in der. *Allgemeine Amazon Web Services-Referenz*

Um einen hohen Durchsatz für Ihr Amazon SNS FIFO-Thema zu aktivieren, aktualisieren Sie das `FifoThroughputScope` Attribut auf. `MessageGroup` Diese Änderung kann über die Konsole oder mithilfe des SDK AWS CLI und vorgenommen werden. Sie kann auch während der Themenerstellung vorgenommen werden. Amazon SNS empfiehlt dies, um das beste Kundenerlebnis zu erzielen und die Wahrscheinlichkeit zu verringern, dass Ihr Thema gedrosselt wird.

**Wichtig**  
Sobald Sie das für ein Thema aktiviert haben`MessageGroup`, kann es nicht mehr `FifoThroughputScope` auf den Durchsatz zurückgesetzt werden. `Topic`

## Aktivieren Sie den Hochdurchsatzmodus für jede abonnierte Amazon SQS FIFO-Warteschlange
<a name="enable-high-throughput-for-sqs-fifo-queue"></a>

Wenn Sie in Ihrem Amazon SNS FIFO-Thema mit aktiviertem hohem Durchsatz veröffentlichen und eine oder mehrere Amazon SQS FIFO-Warteschlangen abonniert sind, wird empfohlen, den hohen Durchsatz in Ihren Amazon SQS FIFO-Warteschlangen zu aktivieren, damit Ihr Amazon SNS FIFO-Thema mit hohem Durchsatz reibungslos zugestellt werden kann. *Weitere Informationen finden Sie unter [Hoher Durchsatz für FIFO-Warteschlangen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) im Entwicklerhandbuch zu Amazon Simple Queue Service.*

# Anwendungsbeispiel für ein Amazon SNS FIFO-Thema
<a name="fifo-example-use-case"></a>

Im folgenden Beispiel wird eine E-Commerce-Plattform beschrieben, die von einem Hersteller von Autoteilen mithilfe von Amazon-SNS-FIFO-Themen und Amazon-SQS-Warteschlangen erstellt wurde. Die Plattform besteht aus drei Serverless-Anwendungen:
+ Lagerverwalter verwenden eine Preisverwaltungsanwendung, um den Preis für jeden Artikel auf Lager festzulegen. Bei diesem Unternehmen können sich die Produktpreise aufgrund von Wechselkursschwankungen, Marktnachfrage und Verschiebungen in der Vertriebsstrategie ändern. Die Preismanagement-Anwendung verwendet eine AWS Lambda -Funktion, die Preisaktualisierungen für ein Amazon SNS-FIFO-Thema veröffentlicht, wenn sich die Preise ändern.
+ Eine Wholesale-Anwendung bietet das Backend für eine Website, wo Auto-Karosseriewerkstätten und Autohersteller die Autoteile des Unternehmens in großen Mengen kaufen können. Um Preisänderungsbenachrichtigungen zu erhalten, abonniert die Großhandels-Anwendung ihre Amazon-SQS-FIFO-Warteschlange für das Amazon-SNS-FIFO-Thema der Preisverwaltungsanwendung.
+ Eine Einzelhandelsanwendung bietet das Backend für eine andere Website, auf der Autobesitzer und Auto-Tuning-Enthusiasten einzelne Autoteile für ihre Fahrzeuge kaufen können. Um Preisänderungsbenachrichtigungen zu erhalten, abonniert die Einzelhandelsanwendung ebenfalls auch ihre Amazon-SQS-FIFO-Warteschlange für das Amazon-SNS-FIFO-Thema der Preisverwaltungsanwendung.
+ Eine Analyseanwendung, die Preisaktualisierungen zusammenfasst und in einem Amazon-S3-Bucket speichert, ermöglicht Amazon Athena, den Bucket für Business Intelligence (BI)-Zwecke abzufragen. Um Preisänderungsbenachrichtigungen zu erhalten, abonniert die Analyse-Anwendung ihre Amazon-SQS-Standard-Warteschlange für das Amazon-SNS-FIFO-Thema der Preisverwaltungsanwendung. Im Gegensatz zu den anderen Anwendungen erfordert die Analyse-Anwendung keine strikte Reihenfolge der Preisaktualisierungen.

![\[Ein Beispiel für eine E-Commerce-Plattform, die von einem Autoteilehersteller mithilfe von Amazon SNS FIFO-Themen und Amazon SQS SQS-Warteschlangen erstellt wurde und zeigt, wie verschiedene serverlose Anwendungen wie Preismanagement, Großhandel, Einzelhandel und Analysen diese Dienste für die Zustellung bestellter Nachrichten und die Deduplizierung nutzen. Diese Konfiguration stellt sicher, dass Groß- und Einzelhandelsanwendungen Preisaktualisierungen in der richtigen Reihenfolge erhalten, während die Analyseanwendung Daten für Business Intelligence-Zwecke aggregiert, ohne dass eine strikte Nachrichtenreihenfolge erforderlich ist.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-usecase.png)


Damit die Groß- und Einzelhandelsanwendungen Preisaktualisierungen in der richtigen Reihenfolge erhalten, muss die Preisverwaltungsanwendung ein streng geordnetes Nachrichtenverteilungssystem verwenden. Die Verwendung von Amazon-SNS-FIFO-Themen und Amazon-SQS-FIFO-Warteschlangen ermöglicht die Verarbeitung von Nachrichten in der Reihenfolge und ohne Duplizierung. Weitere Informationen finden Sie unter [Einzelheiten zur Bestellung von Amazon SNS SNS-Nachrichten für FIFO-Themen](fifo-topic-message-ordering.md). Code-Snippets, die diesen Anwendungsfall implementieren, finden Sie unter[Amazon SNS SNS-Codebeispiele für FIFO-Themen](fifo-topic-code-examples.md).

# Einzelheiten zur Bestellung von Amazon SNS SNS-Nachrichten für FIFO-Themen
<a name="fifo-topic-message-ordering"></a>

In einem Amazon-SNS-FIFO-Thema werden Nachrichten an abonnierte Amazon-SQS-Warteschlangen in der genauen Reihenfolge übermittelt, in der die Nachrichten für das Thema veröffentlicht werden, und zwar nur einmal. Beim Abonnement einer Amazon-SQS-FIFO-Warteschlange erhält der Benutzer der Warteschlange die Nachrichten in der exakten Reihenfolge, in der die Nachrichten an die Warteschlange zugestellt werden, und ohne Duplikate. Wenn eine -Amazon-SQS-Standard-Warteschlange abonniert ist, kann es jedoch vorkommen, dass der Benutzer der Warteschlange Nachrichten nicht in der richtigen Reihenfolge erhält, und dazu mehr als einmal. Dies ermöglicht eine weitere Entkopplung der Abonnenten von den Herausgebern, was den Abonnenten mehr Flexibilität in Bezug auf die Nachrichtennutzung und die Kostenoptimierung bietet, wie das folgende Diagramm zeigt, das auf der Grundlage von [Anwendungsbeispiel für ein Amazon SNS FIFO-Thema](fifo-example-use-case.md) erstellt wurde.

![\[Beispiel für das Nachrichtenzustellungssystem in einem Amazon SNS FIFO-Thema (First-In-First-Out), in dem hervorgehoben wird, wie Nachrichten konsistent in einer strikten Reihenfolge an Amazon SQS FIFO-Warteschlangen zugestellt werden. Dies steht im Gegensatz zum Verhalten einer Amazon SQS SQS-Standardwarteschlange, in der Nachrichten möglicherweise nicht in der richtigen Reihenfolge und mehr als einmal ankommen. Das Beispiel zeigt drei verschiedene Abonnententypen — eine Analysefunktion, eine Großhandelsanwendung und eine Einzelhandelsanwendung. Dabei wird veranschaulicht, wie jeder Abonnent Nachrichten entweder in strenger Reihenfolge oder in Bestform empfängt, je nachdem, welche Art von Warteschlange er abonniert hat.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-ordering-1.png)


Beachten Sie, dass es keine implizite Bestellung der Abonnenten gibt. Das folgende Beispiel zeigt, dass die Nachricht **m1** zuerst an den Großhandels-Abonnenten, dann an den Einzelhandel- und schließlich an den Analyse-Abonnenten geht. Nachricht **m2** wird zuerst an den Einzelhandels, dann an den Großhandels- und schließlich an den Analyse-Abonnenten zugestellt. Obwohl die beiden Nachrichten an die Abonnenten in einer anderen Reihenfolge zugestellt werden, wird die Nachrichtenreihenfolge für jeden Amazon-SQS-FIFO-Abonnenten beibehalten. Jeder Teilnehmer wird isoliert von anderen Abonnenten wahrgenommen.

![\[Beispiel dafür, wie Amazon SNS FIFO-Themen und verschiedene Abonnententypen, einschließlich Amazon SQS FIFO und Standardwarteschlangen, die Bestellung und Zustellung von Nachrichten handhaben. Es zeigt, dass Nachrichten zu einem Thema veröffentlicht und an verschiedene Arten von Warteschlangen zugestellt werden, sodass für FIFO-Warteschlangen eine geordnete Zustellung und für Standardwarteschlangen die Beste-Effort-Bestellung gewährleistet wird. Dieses Setup unterstützt Szenarien auf einer E-Commerce-Plattform, in denen verschiedene Komponenten für eine korrekte Verarbeitung eine zuverlässige Nachrichtenzustellung in einer bestimmten Reihenfolge benötigen.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-ordering-2.png)


Wenn ein Amazon-SQS-Warteschlangenabonnent nicht erreichbar ist, ist er nicht mehr synchronisiert. Angenommen, der Besitzer der Wholesale-AnwendungsQueue fälschlicherweise ändert die[Amazon-SQS-Warteschlangenrichtlinie](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-identity-based-policies.html)auf eine Weise, die verhindert, dass der Amazon-SNS-Serviceprinzipal Nachrichten an die Queue sendet. In diesem Fall schlagen Preisaktualisierungen an die Großhandels-Warteschlange fehl, während die Lieferungen an die Einzelhandels- und die Analyse-Warteschlangen erfolgreich sind, was dazu führt, dass die Abonnenten nicht synchron sind. Wenn der Besitzer der Warteschlange der Großhandelsanwendung die Warteschlangenrichtlinie ändert, setzt Amazon SNS das Zustellen der Nachrichten an die abonnierte Warteschlange fort. Alle Nachrichten, die für das Thema veröffentlicht wurden und auf die falsch konfigurierte Warteschlange abzielen, werden gelöscht, es sei denn, für das Abonnement ist eine [Warteschlange für unzustellbare Nachrichten](sns-dead-letter-queues.md) konfiguriert.

![\[Beispiel für das Verhalten der Nachrichtenzustellung in einem Amazon SNS SNS-FIFO-Setup, bei dem Nachrichten über Amazon SQS SQS-Warteschlangen an verschiedene Abonnententypen (Großhandel, Einzelhandel und Analytik) veröffentlicht werden. Es verdeutlicht die Auswirkungen einer Fehlkonfiguration einer Warteschlangenrichtlinie auf die Nachrichtenzustellungssynchronisierung zwischen verschiedenen Abonnentenwarteschlangen. Das Beispiel zeigt, dass die Nachrichtenzustellung für den Großkundenabonnenten aufgrund eines Richtlinienfehlers fehlschlägt, für Einzelkunden- und Analytics-Abonnenten jedoch erfolgreich fortgesetzt wird. Dabei wird die Bedeutung einer korrekten Warteschlangenkonfiguration für die Aufrechterhaltung einer synchronisierten Datenzustellung hervorgehoben. Dieses Szenario verdeutlicht die Fähigkeit von FIFO-Themen, unter normalen Umständen eine bestellte und exakt einmalige Zustellung sicherzustellen, und zeigt, welche Folgen Konfigurationsfehler haben können.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-ordering-3.png)


Sie können mehrere Anwendungen (oder mehrere Threads innerhalb derselben Anwendung) gleichzeitig Nachrichten in einem SNS-FIFO-Thema veröffentlichen. Wenn Sie dies tun, delegieren Sie die Nachrichtensequenzierung effektiv an den Amazon SNS-Service. Um die etablierte Sequenz von Nachrichten zu bestimmen, können Sie die Sequenznummer überprüfen.

Die Sequenznummer ist eine große, nicht fortlaufende Zahl, die Amazon SNS jeder Nachricht zuweist. Die Länge der Sequenznummer beträgt 128 Bit und nimmt für jede [Nachrichtengruppe](fifo-message-grouping.md) weiter zu. Die Sequenznummer wird an die abonnierten Amazon-SQS-Warteschlangen als Teil des Nachrichtentextes übergeben. Wenn Sie jedoch [Rohnachrichtenzustellung](sns-large-payload-raw-message-delivery.md) aktivieren, enthält die Nachricht, die an die Amazon-SQS-Warteschlange übermittelt wird, weder die Sequenznummer noch andere Amazon-SNS-Nachrichtenmetadaten.

![\[Beispiel für mehrere Lambda-Funktionen, die Nachrichten in einem Amazon SNS FIFO-Thema (First In, First Out) veröffentlichen, das diese Nachrichten dann an eine Amazon SQS SQS-FIFO-Warteschlange weiterleitet, wobei die strikte Reihenfolge der Nachrichtenverarbeitung beibehalten wird. Dieses Setup wird verwendet, um sicherzustellen, dass Nachrichten in der exakten Reihenfolge verarbeitet werden, in der sie an verschiedene Komponenten einer Anwendung gesendet werden, wobei Sequenznummern die Reihenfolge der einzelnen Nachrichten innerhalb einer Gruppe angeben. Diese Art der Konfiguration ist entscheidend für Anwendungen, bei denen die Reihenfolge der Operationen und Nachrichten strikt eingehalten werden muss, um die Konsistenz zu gewährleisten.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-ordering-4.png)


Amazon SNS FIFO-Themen definieren die Reihenfolge im Kontext einer Nachrichtengruppe. Weitere Informationen finden Sie unter [Gruppierung von Amazon SNS SNS-Nachrichten für FIFO-Themen](fifo-message-grouping.md).

# Gruppierung von Amazon SNS SNS-Nachrichten für FIFO-Themen
<a name="fifo-message-grouping"></a>

Nachrichten, die derselben Gruppe angehören, werden nacheinander in einer strengen Reihenfolge in Bezug auf die Gruppe verarbeitet. 

Wenn Sie Nachrichten in einem Amazon SNS FIFO-Thema veröffentlichen, legen Sie die Nachrichtengruppen-ID fest. Die Gruppen-ID ist ein obligatorisches Token, das angibt, dass eine Nachricht zu einer bestimmten Nachrichtengruppe gehört. Das SNS-FIFO-Thema übergibt die Gruppen-ID an die abonnierten Amazon SQS FIFO-Queues. Die Anzahl der Gruppen IDs in SNS-FIFO-Themen oder SQS-FIFO-Warteschlangen ist unbegrenzt. Die Nachrichtengruppen-ID wird nicht an Amazon-SQS-Standard-Warteschlangen weitergegeben.

Es gibt keine Affinität zwischen einer Nachrichtengruppe und einem Abonnement. Daher werden Nachrichten, die für eine Nachrichtengruppe veröffentlicht werden, an alle abonnierten Queues übermittelt, abhängig von den Filterrichtlinien, die mit Abonnements verknüpft sind. Weitere Informationen erhalten Sie unter [Amazon SNS SNS-Nachrichtenzustellung für FIFO-Themen](fifo-message-delivery.md) und [Amazon SNS SNS-Nachrichtenfilterung für FIFO-Themen](fifo-message-filtering.md).

In Anwendungsbeispiel des [Autoteile-Preis-Management](fifo-example-use-case.md) gibt es für jedes Produkt, das auf der Plattform verkauft wird, eine dedizierte Nachrichtengruppe. Das gleiche Amazon-SNS-FIFO-Thema wird für die Verarbeitung aller Preisaktualisierungen verwendet. Die Reihenfolge der Preisaktualisierungen bleibt im Kontext eines einzelnen Autoteile-Produkts erhalten, aber nicht über mehrere Produkte hinweg. In der folgenden Abbildung ist diese Funktionsweise dargestellt. ****Beachten Sie, dass für das Produkt, dessen Nachrichtengruppen-ID **Produkt-214** ist, Nachricht m1 vor m4 verarbeitet wird.**** Diese Sequenz wird während des gesamten Workflows beibehalten, von Amazon-SNS-FIFO bis zu Amazon-SQS-FIFO. **Ebenso wird für das Produkt, dessen Nachrichtengruppen-ID **product-799** ist, die Nachricht **m2** vor m3 verarbeitet.** Bei Verwendung von Amazon SQS SQS-Standardwarteschlangen ist die Nachrichtenreihenfolge jedoch nicht mehr garantiert, und Nachrichtengruppen existieren nicht. Die **produkt-214** und **produkt-799**-Nachrichtengruppen sind unabhängig voneinander, so dass es keine Beziehung zwischen der Sequenzierung ihrer Nachrichten gibt.

![\[Beispiel dafür, wie Nachrichtenreihenfolge und Deduplizierung in einem Amazon SNS SNS-FIFO-Themenszenario funktionieren, das verschiedene AWS-Services Nachrichtengruppen und Nachrichtengruppen umfasst. IDs Es zeigt den Nachrichtenfluss von Lambda-Funktionen über ein Amazon SNS SNS-FIFO-Thema zu verschiedenen Arten von Amazon SQS SQS-Warteschlangen (FIFO und Standard), wobei die strikte Reihenfolge in den FIFO-Warteschlangen beibehalten und gleichzeitig die potenzielle Unordnung in Standardwarteschlangen aufgezeigt wird. Dieses Setup wird verwendet, um die Bedeutung der Nachrichtensequenzierung in Anwendungen wie Preisaktualisierungen auf einer E-Commerce-Plattform hervorzuheben. Dabei wird hervorgehoben, wie jede Nachrichtengruppe ihre Reihenfolge unabhängig voneinander über verschiedene Verbraucherdienste hinweg beibehält.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-grouping.png)


## Verteilung der Daten nach Nachrichtengruppen IDs zur Verbesserung der Leistung
<a name="fifo-message-grouping-message-group-ids"></a>

Um den Zustellungsdurchsatz zu optimieren, stellen Amazon-SNS-FIFO-Themen Nachrichten aus verschiedenen Nachrichtengruppen parallel zu, wobei die Nachrichtenreihenfolge innerhalb der einzelnen Nachrichtengruppen strikt eingehalten wird. Jede einzelne Nachrichtengruppe kann maximal 300 Nachrichten pro Sekunde übermitteln. Um einen hohen Durchsatz für ein einzelnes Thema zu erreichen, sollten Sie daher eine große Anzahl unterschiedlicher Nachrichtengruppen verwenden IDs. Durch die Verwendung einer Vielzahl von Nachrichtengruppen verteilen Amazon-SNS-FIFO-Themen Nachrichten automatisch auf eine größere Anzahl parallel Partitionen.

**Anmerkung**  
Amazon SNS FIFO-Themen sind für die gleichmäßige Verteilung von Nachrichten über Nachrichtengruppen hinweg optimiert IDs, unabhängig von der Anzahl der Gruppen. AWS empfiehlt, eine große Anzahl unterschiedlicher Nachrichtengruppen zu verwenden, um die Leistung IDs zu optimieren.

Wenn Sie in Ihrem Amazon-SNS-FIFO-Thema mit hohem Durchsatz veröffentlichen und mindestens eine Amazon-SQS-FIFO-Warteschlange abonniert ist, wird empfohlen, den hohen Durchsatz für Ihre Warteschlangen zu aktivieren. *Weitere Informationen finden Sie unter [Hoher Durchsatz für FIFO-Warteschlangen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) im Entwicklerhandbuch zu Amazon Simple Queue Service.*

# Amazon SNS SNS-Nachrichtenzustellung für FIFO-Themen
<a name="fifo-message-delivery"></a>

Amazon-SNS-FIFO-Themen (First in, First out) unterstützen die Bereitstellung sowohl an Amazon-SQS-Standard- als auch an FIFO-Warteschlangen, um Kunden Flexibilität und Kontrolle bei der Integration verteilter Anwendungen zu bieten, die Datenkonsistenz nahezu in Echtzeit erfordern.

Für Workloads, die eine strikte Nachrichtenreihenfolge oder Deduplizierung beibehalten müssen, bietet die Kombination von Amazon-SNS-FIFO-Themen mit [Amazon-SQS-FIFO-Warteschlangen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html), die als Zustellungsendpunkt abonniert werden, eine bessere Nachrichtenübermittlung zwischen Anwendungen, wenn die Reihenfolge der Vorgänge und Ereignisse wichtig ist, oder wenn Duplikate nicht toleriert werden können.

Für Workloads, die Bestmögliche Bestellung und at-least-once Lieferung tolerieren, bietet das Abonnieren von [Amazon SQS SQS-Standardwarteschlangen für Amazon SNS FIFO-Themen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues.html) die Möglichkeit, Kosten zu senken und Warteschlangen für Workloads, die kein FIFO verwenden, gemeinsam zu nutzen.

**Anmerkung**  
Um Nachrichten von Amazon SNS FIFO-Themen an AWS Lambda Funktionen weiterzuleiten, sind zusätzliche Schritte erforderlich. Abonnieren Sie zunächst Amazon-SQS-FIFO-Warteschlangen für das Thema. Konfigurieren Sie dann die Queues, um die Funktionen auszulösen. Weitere Informationen finden Sie unter [SQS FIFO als Ereignisquelle](https://aws.amazon.com/blogs/compute/new-for-aws-lambda-sqs-fifo-as-an-event-source/) im *AWS Compute Blog*. 

SNS-FIFO-Themen können keine Nachrichten an vom Kunden verwaltete Endpunkte wie E-Mail-Adressen, mobile Apps, Telefonnummern für SMS oder HTTP(S)-Endpunkte übermitteln. Bei diese Endpunkttypen ist nicht garantiert, dass die strikte Nachrichtenreihenfolge beibehalten wird. Versuche, vom Kunden verwaltete Endpunkte für SNS-FIFO-Themen zu abonnieren, führen zu Fehlern.

SNS-FIFO-Themen unterstützen dieselben Nachrichtenfilterfunktionen wie Standardthemen. Weitere Informationen finden Sie unter [Amazon SNS SNS-Nachrichtenfilterung für FIFO-Themen](fifo-message-filtering.md)und [Vereinfachen Sie Ihr Pub/Sub-Messaging mit Amazon SNS Nachrichtenfilterung](https://aws.amazon.com/blogs/compute/simplify-pubsub-messaging-with-amazon-sns-message-filtering/)Veröffentlichen im *AWS Compute Blog*.

# Amazon SNS SNS-Nachrichtenfilterung für FIFO-Themen
<a name="fifo-message-filtering"></a>

Amazon SNS FIFO-Themen unterstützen die Nachrichtenfilterung. Die Verwendung von Nachrichtenfiltern vereinfacht die Architektur, indem die Abonnenten von der Nachrichten-Routing-Logik von den Publisher-Systemen und die Abonnenten von der Nachrichtenfilterlogik befreit werden.

Wenn Sie eine Amazon-SQS-FIFO- oder Standard-Warteschlange für ein SNS-FIFO-Thema abonnieren, können Sie mithilfe der Nachrichtenfilterung angeben, dass der Abonnent anstelle aller Nachrichten eine Teilmenge empfängt. Jeder Abonnent kann seine eigene Filterrichtlinie als Abonnementattributte festlegen. Basierend auf dem Geltungsbereich der Filterrichtlinie wird diese mit den Attributen oder dem Nachrichtentext abgeglichen. Wenn die Filterrichtlinie übereinstimmt, übermittelt das Thema dem Abonnenten eine Kopie der Nachricht. Wenn keine Übereinstimmung vorhanden ist, liefert das Thema keine Kopie der Nachricht.

Im [Beispiel für das Preismanagement von Autoteilen](fifo-example-use-case.md) wird davon ausgegangen, dass die folgenden Amazon-SNS-Filterrichtlinien festgelegt sind und der Geltungsbereich der Filterrichtlinie `MessageBody` ist:
+ Bei der Großhandelswarteschlange stimmt die Filterrichtlinie `{"business":["wholesale"]}` mit jeder Nachricht überein, die einen Schlüssel namens `business` und die Zeichenfolge `wholesale` im Wertesatz enthält. Im folgenden Diagramm ist einer der Schlüssel in der Nachricht **m1** `business` mit dem Wert `wholesale`. Einer der Schlüssel in Nachricht **m3** ist `business` mit dem Wert `["wholesale,retail"]`. Daher gilt:**m1** und **m3** entsprechen den Kriterien der Filterrichtlinie, und beide Nachrichten werden an die Großhandelsqueue übermittelt.
+ Für die Einzelhandelswarteschlange stimmt die Filterrichtlinie `{"business":["retail"]}` mit jeder Nachricht überein, die einen Schlüssel namens `business` und die Zeichenfolge `retail` im Wertesatz enthält. Im Diagramm ist einer der Schlüssel in der Nachricht **m2** `business` mit dem Wert `retail`. Einer der Schlüssel in Nachricht **m3** ist `business` mit dem Wert `["wholesale,retail"]`. Daher gilt:**m2** und **m3** den Kriterien der Filterrichtlinie entsprechen, und beide Nachrichten werden an die Einzelhandelswarteschlange übermittelt.
+ Für die Analyse-Warteschlange möchten wir, dass Amazon Athena alle Datensätze empfängt, so dass keine Filterrichtlinie angewendet wird.

![\[Beispiel dafür, wie Amazon SNS FIFO-Themen Filterrichtlinien verwenden, um Nachrichten basierend auf dem Nachrichteninhalt an verschiedene Amazon SQS SQS-Warteschlangen weiterzuleiten. Nachrichten m1 und m3, bei denen der Schlüssel „Business“ auf „Wholesale“ gesetzt ist, werden an die Großhandels-Warteschlange zugestellt, während die Nachricht m2 mit „Einzelhandel“ die Route an die Einzelhandels-Warteschlange spezifiziert hat. Dies zeigt eine gezielte Nachrichtenzustellung, bei der sichergestellt wird, dass nur relevante Nachrichten von jeder Abonnentenfunktion empfangen werden, wodurch die Verarbeitungseffizienz und Datenrelevanz optimiert werden.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-filtering.png)


SNS-FIFO-Themen unterstützen eine Vielzahl von übereinstimmenden Operatoren, einschließlich Attributzeichenfolgenwerte, numerische Attributwerte und Attributschlüssel. Weitere Informationen finden Sie unter [Amazon SNS Nachrichtenfilterung](sns-message-filtering.md).

SNS-FIFO-Themen liefern keine doppelten Nachrichten an abonnierte Endpunkte. Weitere Informationen finden Sie unter [Amazon SNS SNS-Nachrichtendeduplizierung für FIFO-Themen](fifo-message-dedup.md).

# Amazon SNS SNS-Nachrichtendeduplizierung für FIFO-Themen
<a name="fifo-message-dedup"></a>

 Amazon SNS FIFO-Themen und Amazon SQS FIFO-Queues unterstützen die Nachrichtendeduplizierung, die eine exakte Nachrichtenübermittlung und -verarbeitung ermöglicht, solange die folgenden Bedingungen erfüllt sind:
+ Die abonnierte Amazon-SQS-FIFO-Warteschlange ist vorhanden und verfügt über Berechtigungen, die es dem Amazon-SNS-Service-Prinzipal ermöglichen, Nachrichten an die Warteschlange zu senden.
+ Der Nutzer der Amazon-SQS-FIFO-Warteschlange verarbeitet die Nachricht und löscht sie aus der Warteschlange, bevor das Zeitlimit für die Sichtbarkeit abläuft.
+ Das Thema Amazon SNS Abonnement“ enthält keine [Nachrichtenfilterung](fifo-message-filtering.md). Wenn Sie die Nachrichtenfilterung konfigurieren, unterstützen Amazon SNS FIFO-Themen die at-most-once Zustellung, da Nachrichten auf der Grundlage Ihrer Abonnementfilterrichtlinien herausgefiltert werden können.
+ Es gibt keine Netzwerkunterbrechungen, die die Bestätigung der Nachrichtenzustellung verhindern.

**Anmerkung**  
Die Nachrichtendeduplizierung gilt für ein gesamtes Amazon SNS FIFO-Thema, wenn das Themenattribut `FifoThroughputScope` auf gesetzt ist. `Topic` [Wenn das Themenattribut auf gesetzt `FifoThroughputScope` ist`MessageGroup`, gilt die Nachrichtendeduplizierung für jede einzelne Nachrichtengruppe.](fifo-message-grouping.md)

Wenn Sie eine Nachricht in einem Amazon-SNS-FIFO-Thema veröffentlichen, muss die Nachricht eine Deduplizierungskennung enthalten. Diese Kennung ist in der Nachricht enthalten, die das Amazon-SNS-FIFO-Thema an die abonnierten Amazon-SQS-FIFO-Warteschlangen übermittelt.

Wenn eine Nachricht mit einer bestimmten Deduplizierungs-ID erfolgreich in einem Amazon SNS FIFO-Thema veröffentlicht wurde, wird jede Nachricht, die innerhalb des Deduplizierungsintervalls von fünf Minuten mit derselben Deduplizierungs-ID veröffentlicht wurde, akzeptiert, aber nicht zugestellt. Das Amazon SNS FIFO-Thema verfolgt weiterhin die Nachrichtendeduplizierungs-ID in dem durch das Topic-Attribut konfigurierten Deduplizierungsbereich`FifoThroughputScope`, auch nachdem die Nachricht an abonnierte Endpunkte zugestellt wurde.

Wenn der Nachrichtentext für jede veröffentlichte Nachricht garantiert eindeutig ist, können Sie die inhaltsbasierte Deduplizierung für ein Amazon SNS FIFO-Thema und die abonnierten Amazon-SQS-FIFO-Warteschlangen aktivieren. Amazon SNS verwendet den Nachrichtentext, um einen eindeutigen Hashwert zu generieren, der als Deduplizierungs-ID für jede Nachricht verwendet wird. Daher müssen Sie beim Senden jeder Nachricht keine Deduplizierungs-ID festlegen.

**Anmerkung**  
Nachrichtenattribute sind nicht in der Hashberechnung enthalten.

Wenn die inhaltsbasierte Deduplizierung für ein Amazon SNS FIFO-Thema aktiviert ist und eine Nachricht mit einer Deduplizierungs-ID veröffentlicht wird, überschreibt die veröffentlichte Deduplizierungs-ID die generierte inhaltsbasierte Deduplizierungs-ID.

Im Beispiel [des Autoteile-Preismanagement](fifo-example-use-case.md) muss das Unternehmen für jede Preisaktualisierung eine universell eindeutige Deduplizierungs-ID festlegen. Dies liegt daran, dass der Nachrichtentext identisch sein kann, selbst wenn sich das Nachrichtenattribut für Groß- und Einzelhandel unterscheidet. Wenn das Unternehmen jedoch den Unternehmenstyp (Groß- oder Einzelhandel) neben der Produkt-ID und dem Produktpreis dem Nachrichtentext hinzugefügt hat, könnte es eine inhaltsbasierte Duplizierung im Amazon-SNS-FIFO-Thema und den abonnierten Amazon-SQS-FIFO-Warteschlangen ermöglichen.

![\[Wie die Nachrichtendeduplizierung in einer Amazon SNS FIFO-Themenumgebung (First In, First Out) funktioniert, anhand eines Beispiels für die Preisverwaltung von Autoteilen Es zeigt, wie verhindert wird, dass doppelte Nachrichten (m1), die im Amazon SNS FIFO-Thema veröffentlicht wurden, mehrfach an die Abonnentensysteme (Großhandels-, Einzelhandels- und Analysewarteschlangen) zugestellt werden. Diese Deduplizierung stellt sicher, dass nur eindeutige Nachrichten verarbeitet werden, wodurch die Effizienz und Genauigkeit der Nachrichtenverarbeitung in den verschiedenen Abonnentenfunktionen verbessert wird.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-dedup.png)


Zusätzlich zur Reihenfolge und Deduplizierung von Nachrichten unterstützen Amazon SNS FIFO-Themen die serverseitige Nachrichtenverschlüsselung (SSE) mit AWS KMS Schlüsseln und den Nachrichtenschutz über VPC-Endpunkte mit. AWS PrivateLink Weitere Informationen finden Sie unter [Amazon SNS SNS-Nachrichtensicherheit für FIFO-Themen](fifo-message-security.md).

# Amazon SNS SNS-Nachrichtensicherheit für FIFO-Themen
<a name="fifo-message-security"></a>

Sie können die Verschlüsselung für Amazon SNS SNS-FIFO-Themen und Amazon SQS SQS-FIFO-Warteschlangen mithilfe von [AWS Key Management Service (AWS KMS) [Kundenhauptschlüsseln](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) ()](https://aws.amazon.com/kms/) aktivieren. CMKs
+ Sie können neue verschlüsselte FIFO-Themen und -Warteschlangen erstellen oder die Verschlüsselung für bestehende aktivieren.
+ Nur der Nachrichtentext ist verschlüsselt. Nachrichtenattribute, Ressourcenmetadaten und Ressourcenmetriken bleiben unverschlüsselt. 

**Anmerkung**  
Durch das Hinzufügen von Verschlüsselung zu einem vorhandenen FIFO-Thema oder einer vorhandenen Queue werden keine nachgelagerten Nachrichten verschlüsselt. Durch das Entfernen der Verschlüsselung aus einem Thema oder einer Queue werden nachgelagerte Nachrichten verschlüsselt.

SNS-FIFO-Themen entschlüsseln die Nachrichten unmittelbar vor der Zustellung an abonnierte Endpunkte. SQS FIFO-Queues entschlüsseln die Nachricht, kurz bevor sie an die Verbraucheranwendung zurückgesendet werden. Weitere Informationen finden Sie unter [Amazon SNS SNS-Datenverschlüsselung](sns-data-encryption.md)und [Verschlüsseln von auf Amazon SNS veröffentlichten Nachrichten mit AWS KMS](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/)Veröffentlichen auf dem *AWS Compute Blogs*aus.

Darüber hinaus unterstützen SNS FIFO-Themen und SQS FIFO-Queues den Datenschutz bei [Schnittstellen-VPC Endpunkte](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)powered by AWS PrivateLink aus. Mithilfe von Schnittstellenendpunkten können Sie Nachrichten von Amazon Virtual Private Cloud (Amazon VPC)-Subnetzen an FIFO-Themen und -Queues senden, ohne das öffentliche Internet zu durchlaufen. Bei diesem Modell bleiben Ihre Nachrichten innerhalb der AWS Infrastruktur und des Netzwerks, wodurch die allgemeine Sicherheit Ihrer Anwendung verbessert wird. Wenn Sie es verwenden AWS PrivateLink, müssen Sie kein Internet-Gateway, keine Network Address Translation (NAT) oder ein virtuelles privates Netzwerk (VPN) einrichten. Weitere Informationen finden Sie unter [Sicherung des Amazon SNS SNS-Datenverkehrs mit VPC-Endpunkten](sns-internetwork-traffic-privacy.md) und [Schutz von auf Amazon SNS veröffentlichten Nachrichten mit AWS PrivateLink](https://aws.amazon.com/blogs/security/securing-messages-published-to-amazon-sns-with-aws-privatelink) im *AWS Sicherheitsblog*.

SNS-FIFO-Themen unterstützen auch Queues für unzustellbare Nachrichten und Nachrichtenspeicher über Availability Zones hinweg. Weitere Informationen finden Sie unter [Dauerhaftigkeit von Amazon SNS SNS-Nachrichten für FIFO-Themen](fifo-message-durability.md).

# Dauerhaftigkeit von Amazon SNS SNS-Nachrichten für FIFO-Themen
<a name="fifo-message-durability"></a>

Amazon-SNS-FIFO-Themen und Amazon-SQS-Warteschlangen sind dauerhaft. Beide Ressourcentypen speichern Nachrichten redundant über mehrere Availability Zones hinweg und stellen Queues für Dead-Letter bereit, um Ausnahmefälle zu bearbeiten.

In Amazon SNS schlägt die Nachrichtenzustellung fehl, wenn aufgrund eines clientseitigen oder serverseitigen Fehlers nicht auf eine abonnierte Amazon SQS Queue zugreifen kann:
+ Client-seitige Fehler treten auf, wenn das Amazon-SNS-FIFO-Thema über veraltete Abonnementmetadaten verfügt. Zwei häufige Fälle von clientseitigen Fehlern treten auf, wenn der Eigentümer der Amazon-SQS-FIFO-Warteschlange eine der folgenden Aktionen ausführt:
  + Es löscht die Queue.
  + Ändert die Queuesrichtlinie so, dass der Amazon SNS Dienstprinzipal daran hindert, Nachrichten an ihn zu senden.

  Amazon SNS versucht nicht erneut, Nachrichten zuzustellen, die aufgrund von clientseitigen Fehlern fehlgeschlagen sind.
+ In diesen Situationen können serverseitige Fehler auftreten:
  + Der Amazon SQS Dienst ist nicht verfügbar.
  + Amazon SQS verarbeitet keine gültige Anforderung des Amazon SNS-Service.

  Bei serverseitigen Fehlern versuchen die Amazon-SNS-FIFO-Themen, die fehlgeschlagenen Zustellungen über 23 Tage hinweg bis zu 100.015 mal zu wiederholen. Weitere Informationen finden Sie unter [Wiederholungsversuche bei der Nachrichtenzustellung Amazon SNS](sns-message-delivery-retries.md).

Bei jeder Art von Fehler kann Amazon SNS Nachrichten an Amazon SQS Unzustellbare Nachrichten Queues abstellen, sodass Daten nicht verloren gehen.

In Amazon SQS schlägt die Nachrichtenverarbeitung fehl, wenn die Verbraucheranwendung die Nachricht nicht empfängt, verarbeitet und aus der Queue gelöscht wird. Wenn die maximale Anzahl von Empfangsanforderungen fehlschlägt, kann Amazon SQS Nachrichten an Queues mit Dead-Lettern abstellen, sodass Daten nicht verloren gehen.

Im [Beispiel für das Preismanagement von Autoteilen](fifo-example-use-case.md) kann das Unternehmen jedem Amazon-SNS-FIFO-Themenabonnement sowie jeder abonnierten Amazon-SQS-Warteschlange eine Amazon-SQS-Warteschlange für unzustellbare Nachrichten (DLQ) zuweisen. Dies schützt das Unternehmen vor jeglichen Preisaktualisierungsverlusten.

![\[Beispiel dafür, wie Warteschlangen für unzustellbare Briefe (DLQs) in Amazon SNS FIFO-Themen und Amazon SQS SQS-Warteschlangen integriert werden, um die Zuverlässigkeit von Nachrichten in einem Preismanagementsystem für Autoteile zu gewährleisten. Es zeigt die Konfiguration, bei der jedes Amazon SNS FIFO-Abonnement für Groß-, Einzelhandels- und Analysezwecke mit entsprechenden Amazon SQS SQS-FIFO- oder Standardwarteschlangen verknüpft ist, die jeweils mit einer eigenen, typgerechten DLQ ausgestattet sind, um vor Nachrichtenverlust aufgrund von Verarbeitungsfehlern zu schützen.\]](http://docs.aws.amazon.com/de_de/sns/latest/dg/images/sns-fifo-dlq.png)


Bei der Warteschlange für unzustellbare Nachrichten (DLQ) für ein Amazon-SNS-Abonnement muss es sich um eine Amazon-SQS-Warteschlange handeln, die dem Typ der abonnierenden Warteschlange entspricht. Zum Beispiel muss ein Amazon-SNS-FIFO-Abonnement für eine Amazon-SQS-FIFO-Warteschlange eine Amazon-SQS-FIFO-Warteschlange für unzustellbare Nachrichten haben. Zum Beispiel muss ein Amazon-SNS-FIFO-Abonnement für eine Amazon-SQS-Standard-Warteschlange eine Amazon-SQS-Standard-Warteschlange für unzustellbare Nachrichten haben. *Weitere Informationen finden Sie unter [Amazon SNS SNS-Warteschlangen für unzustellbare Briefe](sns-dead-letter-queues.md) und im AWS Lambda Beitrag [Designing durable serverless apps with DLQs for Amazon SNS, Amazon SQS,](https://aws.amazon.com/blogs/compute/designing-durable-serverless-apps-with-dlqs-for-amazon-sns-amazon-sqs-aws-lambda/ ) im Compute-Blog.AWS *

Für eine längere Lebensdauer zur Unterstützung der Wiederherstellung nach Ausfällen nachgelagerten Anwendungen können Themenbesitzer auch FIFO-Themen verwenden, um Nachrichten bis zu 365 Tage lang zu archivieren. Themen-Subscriber können diese Nachrichten an einem abonnierten Endpunkt wiederholen, um Nachrichten wiederherzustellen, die auf einen Fehler in einer nachgelagerten Anwendung zurückzuführen sind, oder um den Status einer vorhandenen Anwendung zu replizieren. Weitere Informationen finden Sie unter [Archivierung und Wiedergabe von Amazon SNS SNS-Nachrichten für FIFO-Themen](fifo-message-archiving-replay.md).

# Archivierung und Wiedergabe von Amazon SNS SNS-Nachrichten für FIFO-Themen
<a name="fifo-message-archiving-replay"></a>

## Was ist die Nachrichtenarchivierung und -wiederholung?
<a name="what-is-message-archiving-and-replay"></a>

Amazon SNS bietet eine Funktion zur Archivierung und Wiedergabe von Nachrichten ohne Code, die speziell für FIFO-Themen (First-In-First-Out) entwickelt wurde. Diese Funktion ermöglicht es den Eigentümern von Themen, Nachrichten bis zu 365 Tage lang direkt im Themenarchiv zu speichern und sie bei Bedarf für Abonnenten erneut abzuspielen. Die Archivierung und Wiedergabe von Nachrichten ist unerlässlich, um verloren gegangene Nachrichten wiederherzustellen und Anwendungen durch die Replikation von Status über Regionen oder Systeme hinweg zu synchronisieren.

Auf diese Funktionalität kann über die AWS API, das SDK und zugegriffen werden. CloudFormation AWS-Managementkonsole

**Wichtigste Anwendungsfälle**
+ **Nachrichtenwiederherstellung** — Stellen Sie Nachrichten wieder her, die aufgrund von Fehlern bei Downstream-Anwendungen verloren gegangen sind, indem Sie sie auf dem Endpunkt des Abonnenten abspielen.
+ **Statusreplikation** — Replizieren Sie den Status eines vorhandenen Systems in einer neuen Umgebung, indem Sie Nachrichten ab einem bestimmten Zeitstempel wiedergeben.
+ **Fehlerkorrektur** — Verpasste Nachrichten bei Ausfällen erneut senden, um sicherzustellen, dass alle Ereignisse korrekt verarbeitet werden.

### Komponenten der Nachrichtenarchivierung und -wiedergabe
<a name="message-archiving-and-replay-components"></a>

Verwalten Sie die Archivierung und Wiedergabe von Nachrichten für Amazon SNS FIFO-Themen, einschließlich der Festlegung von Aufbewahrungsfristen, der Überwachung archivierter Nachrichten mithilfe von CloudWatch, der Initiierung von Wiederholungen über Abonnementattribute und der Kenntnis der zum Ändern und Initiieren von Wiederholungen erforderlichen Berechtigungen.

**Archivierung von Nachrichten**
+ Der Eigentümer des Themas aktiviert die Archivierungsfunktion und legt den Aufbewahrungszeitraum für Nachrichten fest, der bis zu 365 Tage betragen kann. Weitere Informationen finden Sie unter [Amazon SNS SNS-Nachrichtenarchivierung für Inhaber von FIFO-Themen](message-archiving-and-replay-topic-owner.md)
+ CloudWatch Metriken helfen bei der Überwachung der archivierten Nachrichten.

**Wiedergabe von Nachrichten**
+ Ein Abonnent initiiert eine Wiederholung und wählt dabei das Zeitfenster aus, in dem die Nachrichten an den abonnierten Endpunkt erneut verarbeitet werden sollen. Weitere Informationen finden Sie unter [Wiederholung von Amazon SNS SNS-Nachrichten für Abonnenten zum Thema FIFO](message-archiving-and-replay-subscriber.md). 
+ Mithilfe der Funktion verwalten Sie die Wiedergabe mithilfe von Abonnementattributen. `ReplayPolicy`

**Relevante Berechtigungen**
+ **`SetSubscriptionAttributes`**— Erforderlich, um die Wiedergabeeinstellungen mithilfe des `ReplayPolicy` Attributs in einem Abonnement zu konfigurieren oder zu ändern.
+ **`Subscribe`**— Erforderlich, um ein neues Abonnement anzuhängen und Wiederholungen zu starten.
+ **`GetTopicAttributes`**— Ermöglicht das Anzeigen der Eigenschaften des Themas, aber bei der Initiierung von Wiederholungen geht es hauptsächlich um die Abonnementverwaltung.

# Amazon SNS SNS-Nachrichtenarchivierung für Inhaber von FIFO-Themen
<a name="message-archiving-and-replay-topic-owner"></a>

Mit der Nachrichtenarchivierung können Sie eine einzige Kopie aller zu Ihrem Thema veröffentlichten Nachrichten archivieren. Sie können veröffentlichte Nachrichten in Ihrem Thema speichern, indem Sie die Nachrichtenarchivierungsrichtlinie für das Thema aktivieren, wodurch die Nachrichtenarchivierung für alle Abonnements aktiviert wird, die mit diesem Thema verknüpft sind. Nachrichten können für mindestens einen Tag bis maximal 365 Tage archiviert werden.

Bei der Festlegung einer Archivrichtlinie fallen zusätzliche Gebühren an. Informationen zu den Preisen finden Sie unter [Amazon SNS – Preise](https://aws.amazon.com/sns/pricing/).

## Erstellen Sie eine Nachrichtenarchivierungsrichtlinie mit dem AWS-Managementkonsole
<a name="message-archiving-and-replay-topic-console"></a>

Verwenden Sie diese Option zum Erstellen einer neuen Nachrichtenarchivrichtlinie mit AWS-Managementkonsole.

1. Melden Sie sich bei der [Amazon-SNS-Konsole](https://console.aws.amazon.com/sns/home) an.

1. Wählen Sie ein Thema aus oder erstellen Sie ein neues Thema. Weitere Informationen zum Erstellen von Themen finden Sie unter [Erstellen eines Amazon SNS-Themas](sns-create-topic.md).
**Anmerkung**  
Die Archivierung und Wiedergabe von Amazon SNS SNS-Nachrichten ist nur für application-to-application (A2A) FIFO-Themen verfügbar.

1. Erweitern Sie auf der Seite **Edit topic** (Thema bearbeiten) den Abschnitt **Archive policy** (Archivrichtlinie) .

1. Aktivieren Sie die Funktion **Archive policy** (Archivrichtlinie) und geben Sie im Thema die **Anzahl der Tage** ein, für die Sie Nachrichten archivieren möchten.

1. Wählen Sie **Änderungen speichern ** aus.

**Anzeigen, Bearbeiten und Deaktivieren einer Themenrichtlinie für die Nachrichtenarchivierung**
+ Auf der Seite **Topic details** (Themendetails) zeigt die **Retention policy** (Aufbewahrungsrichtlinie) den Status der Archivrichtlinie an, einschließlich der Anzahl der Tage, für die sie festgelegt ist. Wählen Sie die Registerkarte **Archive policy** (Archivrichtlinie), um die folgenden Details zum Nachrichtenarchiv anzuzeigen:
  + **Status** — Der Archivierungs- und Wiederholungsstatus wird als **active** (aktiv) angezeigt, wenn eine Archivrichtlinie angewendet wird. Der Archivierungs- und Wiederholungsstatus wird als **inactive** (inaktiv) angezeigt, wenn die Archivrichtlinie auf ein leeres JSON-Objekt festgelegt ist.
  + **Message retention period** (Aufbewahrungszeitraum für Nachrichten) – Die angegebene Anzahl von Tagen für die Aufbewahrung von Nachrichten.
  + **Archive start date** (Startdatum des Archivs) – Das Datum, ab dem Suscriber Nachrichten wiederholen können.
  + **JSON preview** (JSON-Vorschau) – Die JSON-Vorschau der Archivrichtlinie.
+ (Optional) Um eine Archivrichtlinie zu **bearbeiten**, wechseln Sie zur Seite mit der Themenzusammenfassung und wählen Sie **Edit** (Bearbeiten) aus.
+ (Optional) Um eine Archivrichtlinie zu **deaktivieren**, wechseln Sie zur Seite mit der Themenzusammenfassung und wählen Sie **Edit** (Bearbeiten) aus. Deaktivieren Sie die **Archive Policy** (Archivrichtlinie) und wählen Sie **Save changes** (Änderungen speichern).
+ (Optional) Um ein Thema mit einer Archivrichtlinie zu **löschen**, müssen Sie zuerst die Archivrichtlinie wie zuvor beschrieben deaktivieren.
**Wichtig**  
Um das versehentliche Löschen von Nachrichten zu vermeiden, ist es nicht möglich, ein Thema mit einer aktiven Nachrichtenarchivierungsrichtlinie zu löschen. Die Nachrichtenarchivierungsrichtlinie des Themas muss deaktiviert werden, bevor das Thema gelöscht werden kann. Wenn Sie eine Nachrichtenarchivierungsrichtlinie deaktivieren, löscht Amazon SNS alle archivierten Nachrichten. Beim Löschen eines Themas werden Abonnements entfernt und alle Nachrichten, die gerade übertragen werden, können möglicherweise nicht zugestellt werden.

## Eine Nachrichtenarchivierungsrichtlinie mit der API erstellen
<a name="message-archiving-and-replay-topic-api"></a>

Um mithilfe der API eine Nachrichtenarchivierungsrichtlinie zu erstellen, müssen Sie das Attribut `ArchivePolicy` zu Ihrem Thema hinzufügen. Sie können `ArchivePolicy` mithilfe der API-Aktionen `CreateTopic` und `SetTopicAttributes` festlegen. `ArchivePolicy` hat einen einzigen Wert, `MessageRetentionPeriod`, der die Anzahl der Tage darstellt, an denen Amazon SNS Nachrichten aufbewahrt. Um die Nachrichtenarchivierung für Ihr Thema zu aktivieren, legen Sie `MessageRetentionPeriod` auf einen ganzzahligen Wert größer als Null fest. Um beispielsweise Nachrichten 30 Tage lang in Ihrem Archiv aufzubewahren, legen Sie für `ArchivePolicy` Folgendes fest:

```
{
    "ArchivePolicy": {
        "MessageRetentionPeriod": "30"
    }
}
```

Um die Nachrichtenarchivierung für Ihr Thema zu deaktivieren und das Archiv zu löschen, deaktivieren Sie `ArchivePolicy` wie folgt:

```
{}
```

## Eine Nachrichtenarchivierungsrichtlinie mit dem SDK erstellen
<a name="message-archiving-and-replay-topic-sdk"></a>

Um ein AWS SDK zu verwenden, müssen Sie es mit Ihren Anmeldeinformationen konfigurieren. Weitere Informationen finden Sie unter [Geteilte `credentials` Dateien `config` und Dateien](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) im * AWS SDKs Referenzhandbuch zu Tools*.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie `ArchivePolicy` für ein Amazon SNS-Thema festlegen, damit alle Nachrichten, die zum Thema veröffentlicht wurden, 30 Tage lang aufbewahrt werden.

```
// Specify the ARN of the Amazon SNS topic to set the ArchivePolicy for.
String topicArn =
    "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo";

// Set the MessageRetentionPeriod to 30 days for the ArchivePolicy.
String archivePolicy =
    "{\"MessageRetentionPeriod\":\"30\"}";

// Set the ArchivePolicy for the Amazon SNS topic
SetTopicAttributesRequest request = new SetTopicAttributesRequest()
    .withTopicArn(topicArn)
    .withAttributeName("ArchivePolicy")
    .withAttributeValue(archivePolicy);
sns.setTopicAttributes(request);
```

## Erstellen Sie eine Nachrichtenarchivierungsrichtlinie mit CloudFormation
<a name="message-archiving-and-replay-topic-cfn"></a>

Informationen zum Erstellen einer Archivrichtlinie CloudFormation finden Sie unter [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html)im *AWS CloudFormation Benutzerhandbuch*.

## Zugriff auf ein verschlüsseltes Archiv gewähren
<a name="message-archiving-and-replay-topic-kms"></a>

Bevor ein Suscriber mit der Wiederholung von Nachrichten aus einem verschlüsselten Thema beginnen kann, müssen Sie die folgenden Schritte ausführen. Da frühere Nachrichten wiederholt werden, muss Amazon SNS `Decrypt`-Zugriff auf den KMS-Schlüssel erhalten, der zur Verschlüsselung der Nachrichten im Archiv verwendet wurde.

1. Wenn Sie Nachrichten mit einem KMS-Schlüssel verschlüsseln und innerhalb des Themas speichern, müssen Sie Amazon SNS die Möglichkeit geben, diese Nachrichten über die Schlüsselrichtlinie zu entschlüsseln. Weitere Informationen finden Sie unter [Amazon SNS Entschlüsselungsberechtigungen gewähren](#message-archiving-and-replay-topic-decrypt-permissions).

1.  AWS KMS Für Amazon SNS aktivieren. Weitere Informationen finden Sie unter [Berechtigungen konfigurieren AWS KMS](sns-key-management.md#sns-what-permissions-for-sse).

**Wichtig**  
Ändern Sie beim Hinzufügen der neuen Abschnitte zur KMS-Schlüsselrichtlinie keinen der vorhandenen Abschnitte. Wenn die Verschlüsselung für ein Thema aktiviert ist und der KMS-Schlüssel deaktiviert oder gelöscht wird oder die KMS-Schlüsselrichtlinie nicht korrekt für Amazon SNS konfiguriert ist, kann Amazon SNS keine Nachrichten für Ihre Subscriber wiederholen. 

### Amazon SNS Entschlüsselungsberechtigungen gewähren
<a name="message-archiving-and-replay-topic-decrypt-permissions"></a>

Damit Amazon SNS auf verschlüsselte Nachrichten aus dem Archiv Ihres Themas zugreifen und sie auf abonnierten Endpunkten archivieren und wiederholen kann, müssen Sie das Amazon SNS-Serviceprinzip aktivieren, um diese Nachrichten zu entschlüsseln.

Im Folgenden finden Sie eine Beispielrichtlinie, die erforderlich ist, damit der Prinzipal des Amazon SNS gespeicherte Nachrichten während einer Wiederholung von historischen Nachrichten aus Ihrem Thema entschlüsseln kann.

```
{
    "Sid": "Allow SNS to decrypt archived messages",
    "Effect": "Allow",
    "Principal": {
        "Service": "sns.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    "Resource": "*"
}
```

## Überwachen Sie Messdaten zur Nachrichtenarchivierung mit Amazon CloudWatch
<a name="message-archiving-and-replay-topic-cloudwatch"></a>

Sie können archivierte Nachrichten mithilfe von Amazon CloudWatch anhand der folgenden Metriken überwachen. Um über Anomalien in Ihren Workloads informiert zu werden und Auswirkungen zu vermeiden, können Sie CloudWatch Amazon-Alarme für diese Metriken konfigurieren. Weitere Details finden Sie unter [Protokollierung und Überwachung in Amazon SNS](sns-logging-monitoring.md).


| Metrik | Description | 
| --- | --- | 
|  **ApproximateNumberOfMessagesArchived**  |  Stellt dem Eigentümer des Themas die Gesamtanzahl der im Themenarchiv archivierten Nachrichten mit einer Auflösung von 60 Minuten zur Verfügung.  | 
|  **ApproximateNumberOfBytesArchived**   |  Stellt dem Eigentümer des Themas die Gesamtanzahl der archivierten Bytes für alle Nachrichten im Themenarchiv mit einer Auflösung von 60 Minuten zur Verfügung.  | 
|  **NumberOfMessagesArchiveProcessing**   |  Nennt dem Eigentümer des Themas die Anzahl der Nachrichten, die während des Intervalls im Themenarchiv gespeichert wurden, mit einer Auflösung von 1 Minute.  | 
|  **NumberOfBytesArchiveProcessing**  |  Nennt dem Eigentümer des Themas die Gesamtzahl der Bytes, die während des Intervalls im Themenarchiv gespeichert wurden, mit einer Auflösung von 1 Minute.  | 

Die `GetTopicAttributes`-API verfügt über eine `BeginningArchiveTime`-Eigenschaft, die den ältesten Zeitstempel darstellt, zu dem ein Subscriber eine Wiederholung starten kann. Im Folgenden finden Sie eine Beispielantwort für diese API-Aktion:

```
{
 "ArchivePolicy": {
    "MessageRetentionPeriod": "<integer>"
  },
  "BeginningArchiveTime": "<timestamp>",
  ...
}
```

# Wiederholung von Amazon SNS SNS-Nachrichten für Abonnenten zum Thema FIFO
<a name="message-archiving-and-replay-subscriber"></a>

Amazon SNS Replay ermöglicht es Themenabonnenten, archivierte Nachrichten aus dem Themendatenspeicher abzurufen und erneut an einen abonnierten Endpunkt zu senden.
+ Nachrichten können sofort nach der Erstellung des Abonnements wiedergegeben werden.
+ Eine wiedergegebene Nachricht behält den gleichen Inhalt,`MessageId`, `Timestamp` wie das Original.
+ Die Nachricht enthält ein `Replayed` Attribut, das angibt, dass es sich um eine wiedergegebene Nachricht handelt.
+ Um nur bestimmte Nachrichten wiederzugeben, wenden Sie eine Filterrichtlinie auf Ihr Abonnement an.

Weitere Informationen zum Filtern von Nachrichten finden Sie unter [Filtert wiederholte Nachrichten](#message-archiving-and-replay-subscription-filtering).

## Erstellen Sie eine Richtlinie für die Nachrichtenwiedergabe mit dem AWS-Managementkonsole
<a name="message-archiving-and-replay-replaying-console"></a>

Verwenden Sie diese Option zum Erstellen einer neuen Wiederholungsrichtlinie mit AWS-Managementkonsole.

1. Melden Sie sich bei der [Amazon-SNS-Konsole](https://console.aws.amazon.com/sns/home) an.

1. Wählen Sie ein Themenabonnement aus oder erstellen Sie ein neues Thema. Weitere Informationen zum Erstellen von Abonnements finden Sie unter [Ein Abonnement für ein Amazon SNS SNS-Thema erstellen](sns-create-subscribe-endpoint-to-topic.md).

1. Um die Nachrichtenwiederholung zu starten, rufen Sie das Dropdown-Menü **Replay** (Wiederholung) auf und wählen Sie **Start replay** (Wiederholung starten).

1. Treffen Sie im Modal **Replay timeframe** (Zeitrahmen für Wiederholung) die folgenden Auswahlen:

   1. **Startdatum und Uhrzeit der Wiedergabe wählen — Wählen Sie das Datum** **(YYYY/MM/DDFormat) und die **Uhrzeit**** (24-Stunden-Format hh:mm:ss) aus, ab dem Sie mit der Wiedergabe archivierter Nachrichten beginnen möchten. Die Startzeit muss nach Beginn der ungefähren Archivierungszeit liegen.

   1. **(Optional) Wählen Sie Datum und Uhrzeit für das Ende der Wiedergabe — Wählen Sie das Datum (YYYY/MM/DDFormat) und** **die **Uhrzeit**** (24-Stunden-Format hh:mm:ss) aus, zu der Sie die Wiedergabe archivierter Nachrichten beenden möchten.

   1. Wählen Sie **Start replay** „Wiederholung starten“.

1. (Optional) Um die Wiedergabe einer Nachricht zu **beenden**, rufen Sie die Seite mit den **Subscription details** (Abonnementdetails) auf und wählen Sie im Dropdown-Menü **Replay** (Wiederholung) die Option **Stop replay** (Wiederholung beenden) aus.

1. (Optional) Informationen zur **Überwachung** der Nachrichtenwiedergabe-Metriken innerhalb dieses Workflows mithilfe von finden Sie unter. CloudWatch [Überwachen Sie die Messdaten zur Nachrichtenwiedergabe mit Amazon CloudWatch](#message-archiving-and-replay-subscription-cloudwatch)

**Informationen zum Anzeigen und Bearbeiten einer Nachrichtenwiederholungsrichtlinie**

Auf der Seite **Subscription details** (Abonnementdetails) können Sie die folgenden Aktionen ausführen:
+ Um den Wiederholungsstatus der Nachricht **anzuzeigen**, werden im Feld **Replay status** (Wiederholungsstatus) die folgenden Werte angezeigt:
  + **Completed** (Abgeschlossen) – Die Wiederholung hat alle Nachrichten erfolgreich erneut zugestellt und stellt jetzt neu veröffentlichte Nachrichten zu.
  + **In progress** (In Bearbeitung) – Die Wiederholung wiederholt derzeit die ausgewählten Nachrichten.
  + **Failed** (Fehlgeschlagen) – Die Wiederholung konnte nicht abgeschlossen werden.
  + **Pending** (Ausstehend) – Der Standardstatus, während die Wiederholung gestartet wird.
+ **(Optional) Um eine Nachrichtenwiederholungsrichtlinie zu **ändern**, rufen Sie die Seite **Subscription details** (Abonnementdetails) auf und wählen Sie im Dropdown-Menü Replay** (Wiederholung) die Option **Start replay** (Wiederholung starten) aus. Durch das Starten einer Wiederholung wird die bestehende Wiederholung ersetzt.

## Dem Abonnement mithilfe der API eine Wiederholungsrichtlinie hinzufügen
<a name="message-archiving-and-replay-subscription-api"></a>

Verwenden Sie das Attribut `ReplayPolicy`, um archivierte Nachrichten zu wiederholen. `ReplayPolicy` kann mit den API-Aktionen `Subscribe` und `SetSubscriptionAttributes` verwendet werden. Diese Richtlinie hat folgende Werte:
+ **`StartingPoint`** (Obligatorisch) – Zeigt an, ab welchem Punkt die Wiederholung von Nachrichten gestartet werden soll.
+ **`EndingPoint`**(Optional) – Zeigt an, wann die Nachrichtenwiederholung beendet werden soll. Wenn `EndingPoint` weggelassen wird, wird die Wiederholung fortgesetzt, bis die aktuelle Uhrzeit erreicht ist.
+ **`PointType`** (Obligatorisch) – Legt den Typ der Start- und Endpunkte fest. Derzeit wird `Timestamp` als einziger Wert für `PointType` unterstützt.

Um beispielsweise nach dem Ausfall einer nachgeschalteten Anwendung eine Wiederherstellung durchzuführen und alle Nachrichten für einen Zeitraum von zwei Stunden am 1. Oktober 2023 erneut zu senden, verwenden Sie die API-Aktion `SetSubscriptionAttributes`, um wie folgt ein `ReplayPolicy` festzulegen:

```
{
  "PointType":"Timestamp", 
  "StartingPoint":"2023-10-01T10:00:00.000Z", 
  "EndingPoint":"2023-10-01T12:00:00.000Z"
}
```

Um alle Nachrichten, die am 1. Oktober 2023 an das Thema gesendet wurden, zu wiederholen und weiterhin alle neu veröffentlichten Nachrichten zu Ihrem Thema zu erhalten, verwenden Sie die API-Aktion `SetSubscriptionAttributes`, um wie folgt ein `ReplayPolicy` für Ihr Abonnement festzulegen:

```
{
  "PointType":"Timestamp",
  "StartingPoint":"2023-10-01T00:00:00.000Z"
}
```

Um zu überprüfen, ob eine Nachricht wiederholt wurde, wird jeder wiedergegebenen Nachricht das boolesche Attribut `Replayed` hinzugefügt.

## Dem Abonnement mithilfe des SDK eine Wiederholungsrichtlinie hinzufügen
<a name="message-replay-sdk"></a>

Um ein AWS SDK verwenden zu können, müssen Sie es mit Ihren Anmeldeinformationen konfigurieren. Weitere Informationen finden Sie unter [Geteilte `credentials` Dateien `config` und Dateien](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) im * AWS SDKs Referenzhandbuch zu Tools*.

Das folgende Codebeispiel zeigt, wie Sie `ReplayPolicy` bei einem Abonnement festlegen, damit Nachrichten aus dem Archiv des Amazon SNS FIFO-Themas für ein 2-stündiges Zeitfenster am 1. Oktober 2023 erneut zugestellt werden.

```
// Specify the ARN of the Amazon SNS subscription to initiate the ReplayPolicy on.
String subscriptionArn =
    "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo:1d2a3e9d-7f2f-447c-88ae-03f1c68294da";

// Set the ReplayPolicy to replay messages from the topic's archive 
// for a 2 hour time period on October 1st 2023 between 10am and 12pm UTC.
String replayPolicy =
    "{\"PointType\":\"Timestamp\",\"StartingPoint\":\"2023-10-01T10:00:00.000Z\",\"EndingPoint\":\"2023-10-01T12:00:00.000Z\"}";

// Set the ArchivePolicy for the Amazon SNS topic
SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest()
    .withSubscriptionArn(subscriptionArn)
    .withAttributeName("ReplayPolicy")
    .withAttributeValue(replayPolicy);
sns.setSubscriptionAttributes(request);
```

## Verstehen der EndingPoint
<a name="message-archiving-and-replay-understanding-endpoint"></a>

Wenn Sie ein `ReplayPolicy` Abonnement für Amazon SNS beantragen, ist der `EndingPoint` Wert optional. Wenn kein `EndingPoint` Wert angegeben wird, beginnt die Wiedergabe an der angegebenen Uhrzeit `StartingPoint` und wird fortgesetzt, bis die aktuelle Uhrzeit erreicht ist, einschließlich der Verarbeitung neu veröffentlichter Nachrichten. Sobald das Abonnement abgeschlossen ist, funktioniert es wie ein reguläres Abonnement, bei dem neue Nachrichten empfangen werden, sobald sie veröffentlicht werden.

Wenn ein angegeben `EndingPoint` ist, spielt der Dienst Nachrichten von `StartingPoint` bis zu erneut ab `EndingPoint` und stoppt dann. **Durch diese Aktion wird das Abonnement effektiv angehalten.** Solange das Abonnement pausiert ist, werden neu veröffentlichte Nachrichten nicht an den abonnierten Endpunkt zugestellt.

Um die Nachrichtenzustellung wieder aufzunehmen, wenden Sie eine neue an, `ReplayPolicy` ohne eine anzugeben`EndingPoint`, und legen Sie `StartingPoint` den gewünschten Zeitpunkt fest, ab dem weiterhin Nachrichten empfangen werden sollen. Um beispielsweise ein Abonnement an der Stelle fortzusetzen, an der eine vorherige Wiedergabe beendet wurde, setzen Sie das neue Abonnement `StartingPoint` auf den zuvor bereitgestellten `EndingPoint` Wert.

## Filtert wiederholte Nachrichten
<a name="message-archiving-and-replay-subscription-filtering"></a>

Mit der Amazon SNS-Nachrichtenfilterung können Sie steuern, welche Nachrichten die Amazon SNS an Ihrem Abonnentenendpunkt wiederholt. Wenn sowohl Nachrichtenfilterung als auch Nachrichtenarchivierung aktiviert sind, ruft Amazon SNS die Nachricht zunächst aus dem Datenspeicher des Themas ab und ordnet sie dann dem `FilterPolicy` des Abonnements zu. Die Nachricht wird an den abonnierten Endpunkt übermittelt, wenn eine Übereinstimmung vorliegt, andernfalls wird die Nachricht herausgefiltert. Weitere Informationen finden Sie unter [Filterrichtlinien für Amazon-SNS-Abonnements](sns-subscription-filter-policies.md).

## Überwachen Sie die Messdaten zur Nachrichtenwiedergabe mit Amazon CloudWatch
<a name="message-archiving-and-replay-subscription-cloudwatch"></a>

Sie können Replay-Nachrichten mithilfe von Amazon CloudWatch anhand der folgenden Metriken überwachen. Um über Anomalien in Ihren Workloads informiert zu werden und Auswirkungen zu vermeiden, können Sie CloudWatch Amazon-Alarme für diese Metriken konfigurieren. Weitere Details finden Sie unter [Protokollierung und Überwachung in Amazon SNS](sns-logging-monitoring.md).


| Metrik | Description | 
| --- | --- | 
|  **NumberOfReplayedNotificationsDelivered**  |  Nennt dem Suscriber die Gesamtanzahl der aus dem Themenarchiv wiederholten Nachrichten mit einer Auflösung von 1 Minute.  | 
|  **NumberOfReplayedNotificationsFailed**   |  Nennt dem Suscriber die Gesamtanzahl der aus dem wiederholten Nachrichten mit einer Auflösung von 1 Minute, die nicht aus dem Themenarchiv zugestellt werden konnten.  | 

# Amazon SNS SNS-Codebeispiele für FIFO-Themen
<a name="fifo-topic-code-examples"></a>

Verwenden Sie die folgenden Codebeispiele, um den [Beispielanwendungsfall für das Preismanagement von Autoteilen](fifo-example-use-case.md) in ein Amazon SNS SNS-FIFO-Thema und entweder eine Amazon SQS SQS-FIFO-Warteschlange oder eine Standardwarteschlange zu integrieren.

## Verwenden eines SDK AWS
<a name="fifo-topic-aws-sdks"></a>

Mithilfe eines AWS SDK erstellen Sie ein Amazon SNS FIFO-Thema, indem Sie sein `FifoTopic` Attribut auf setzen. **true** Sie erstellen eine Amazon-SQS-FIFO-Warteschlange, indem Sie ihr `FifoQueue`-Attribut auf **true** setzen. Außerdem müssen Sie das Suffix **.fifo**zum Namen jeder FIFO-Ressource hinzufügen. Nachdem Sie ein FIFO-Thema oder eine Queue erstellt haben, können Sie es nicht in ein Standardthema oder eine Standardqueue konvertieren.

In den folgenden Codebeispielen werden diese FIFO- und Standard-Warteschlangenressourcen erstellt:
+ Das Amazon-SNS-FIFO-Thema, das die Preisaktualisierungen verteilt
+ Die Amazon-SQS-FIFO-Warteschlangen, die diese Updates für die Groß- und Einzelhandel-Anwendung bereitstellen
+ Die Amazon-SQS-Standardwarteschlange für die Analyseanwendung, in der Datensätze gespeichert werden, die für Business Intelligence (BI) abgefragt werden können
+ Die Amazon-SNS-FIFO-Abonnements, die beide Warteschlangen mit dem Thema verbinden

In diesem Beispiel werden [Filterrichtlinien](sns-subscription-filter-policies.md) in den Abonnements eingestellt. Wenn Sie das Beispiel überprüfen, indem Sie eine Nachricht im -Thema veröffentlichen, stellen Sie sicher, dass Sie die Nachricht mit dem `business`-Attribut veröffentlichen. Geben Sie entweder `retail`oder `wholesale`als Attributwert an. Andernfalls wird die Nachricht herausgefiltert und nicht an die abonnierten Queues übermittelt. Weitere Informationen finden Sie unter [Amazon SNS SNS-Nachrichtenfilterung für FIFO-Themen](fifo-message-filtering.md).

------
#### [ Java ]

**SDK für Java 2.x**  
 Es gibt noch mehr dazu. GitHub Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das [AWS -Code-Beispiel-](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples) einrichten und ausführen. 
Dieses Beispiel  
+ erstellt ein Amazon-SNS-FIFO-Thema, zwei Amazon SQS-FIFO-Warteschlangen und eine Standard-Warteschlange.
+ abonniert die Warteschlangen für das Thema und veröffentlicht eine Nachricht zu dem Thema.
Der [Test](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns/src/test/java/com/example/sns/PriceUpdateExampleTest.java) überprüft den Eingang der Nachricht in jeder Warteschlange. Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns/src/main/java/com/example/sns/PriceUpdateExample.java) zeigt auch das Hinzufügen von Zugriffsrichtlinien und löscht die Ressourcen am Ende.  

```
public class PriceUpdateExample {
    public final static SnsClient snsClient = SnsClient.create();
    public final static SqsClient sqsClient = SqsClient.create();

    public static void main(String[] args) {

        final String usage = "\n" +
            "Usage: " +
            "    <topicName> <wholesaleQueueFifoName> <retailQueueFifoName> <analyticsQueueName>\n\n" +
            "Where:\n" +
            "   fifoTopicName - The name of the FIFO topic that you want to create. \n\n" +
            "   wholesaleQueueARN - The name of a SQS FIFO queue that will be created for the wholesale consumer. \n\n"
            +
            "   retailQueueARN - The name of a SQS FIFO queue that will created for the retail consumer. \n\n" +
            "   analyticsQueueARN - The name of a SQS standard queue that will be created for the analytics consumer. \n\n";
        if (args.length != 4) {
            System.out.println(usage);
            System.exit(1);
        }

        final String fifoTopicName = args[0];
        final String wholeSaleQueueName = args[1];
        final String retailQueueName = args[2];
        final String analyticsQueueName = args[3];

        // For convenience, the QueueData class holds metadata about a queue: ARN, URL,
        // name and type.
        List<QueueData> queues = List.of(
            new QueueData(wholeSaleQueueName, QueueType.FIFO),
            new QueueData(retailQueueName, QueueType.FIFO),
            new QueueData(analyticsQueueName, QueueType.Standard));

        // Create queues.
        createQueues(queues);

        // Create a topic.
        String topicARN = createFIFOTopic(fifoTopicName);

        // Subscribe each queue to the topic.
        subscribeQueues(queues, topicARN);

        // Allow the newly created topic to send messages to the queues.
        addAccessPolicyToQueuesFINAL(queues, topicARN);

        // Publish a sample price update message with payload.
        publishPriceUpdate(topicARN, "{\"product\": 214, \"price\": 79.99}", "Consumables");

        // Clean up resources.
        deleteSubscriptions(queues);
        deleteQueues(queues);
        deleteTopic(topicARN);
    }

    public static String createFIFOTopic(String topicName) {
        try {
            // Create a FIFO topic by using the SNS service client.
            Map<String, String> topicAttributes = Map.of(
                "FifoTopic", "true",
                "ContentBasedDeduplication", "false",
                "FifoThroughputScope", "MessageGroup");

            CreateTopicRequest topicRequest = CreateTopicRequest.builder()
                .name(topicName)
                .attributes(topicAttributes)
                .build();

            CreateTopicResponse response = snsClient.createTopic(topicRequest);
            String topicArn = response.topicArn();
            System.out.println("The topic ARN is" + topicArn);

            return topicArn;

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    public static void subscribeQueues(List<QueueData> queues, String topicARN) {
        queues.forEach(queue -> {
            SubscribeRequest subscribeRequest = SubscribeRequest.builder()
                .topicArn(topicARN)
                .endpoint(queue.queueARN)
                .protocol("sqs")
                .build();

            // Subscribe to the endpoint by using the SNS service client.
            // Only Amazon SQS queues can receive notifications from an Amazon SNS FIFO
            // topic.
            SubscribeResponse subscribeResponse = snsClient.subscribe(subscribeRequest);
            System.out.println("The queue [" + queue.queueARN + "] subscribed to the topic [" + topicARN + "]");
            queue.subscriptionARN = subscribeResponse.subscriptionArn();
        });
    }

    public static void publishPriceUpdate(String topicArn, String payload, String groupId) {

        try {
            // Create and publish a message that updates the wholesale price.
            String subject = "Price Update";
            String dedupId = UUID.randomUUID().toString();
            String attributeName = "business";
            String attributeValue = "wholesale";

            MessageAttributeValue msgAttValue = MessageAttributeValue.builder()
                .dataType("String")
                .stringValue(attributeValue)
                .build();

            Map<String, MessageAttributeValue> attributes = new HashMap<>();
            attributes.put(attributeName, msgAttValue);
            PublishRequest pubRequest = PublishRequest.builder()
                .topicArn(topicArn)
                .subject(subject)
                .message(payload)
                .messageGroupId(groupId)
                .messageDeduplicationId(dedupId)
                .messageAttributes(attributes)
                .build();

            final PublishResponse response = snsClient.publish(pubRequest);
            System.out.println(response.messageId());
            System.out.println(response.sequenceNumber());
            System.out.println("Message was published to " + topicArn);

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```
+ Weitere API-Informationen finden Sie in den folgenden Themen der *AWS SDK for Java 2.x -API-Referenz*.
  + [CreateTopic](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/CreateTopic)
  + [Veröffentlichen](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/Publish)
  + [Abonnieren](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/Subscribe)

------
#### [ Python ]

**SDK für Python (Boto3)**  
 Es gibt noch mehr GitHub. Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das [AWS -Code-Beispiel-](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sns#code-examples) einrichten und ausführen. 
Erstellen Sie ein Amazon-SNS-FIFO-Thema, abonnieren Sie eine Amazon-SQS-FIFO- und eine Standard-Warteschlange für das Thema und veröffentlichen Sie eine Nachricht zu dem Thema.  

```
def usage_demo():
    """Shows how to subscribe queues to a FIFO topic."""
    print("-" * 88)
    print("Welcome to the `Subscribe queues to a FIFO topic` demo!")
    print("-" * 88)

    sns = boto3.resource("sns")
    sqs = boto3.resource("sqs")
    fifo_topic_wrapper = FifoTopicWrapper(sns)
    sns_wrapper = SnsWrapper(sns)

    prefix = "sqs-subscribe-demo-"
    queues = set()
    subscriptions = set()

    wholesale_queue = sqs.create_queue(
        QueueName=prefix + "wholesale.fifo",
        Attributes={
            "MaximumMessageSize": str(4096),
            "ReceiveMessageWaitTimeSeconds": str(10),
            "VisibilityTimeout": str(300),
            "FifoQueue": str(True),
            "ContentBasedDeduplication": str(True),
        },
    )
    queues.add(wholesale_queue)
    print(f"Created FIFO queue with URL: {wholesale_queue.url}.")

    retail_queue = sqs.create_queue(
        QueueName=prefix + "retail.fifo",
        Attributes={
            "MaximumMessageSize": str(4096),
            "ReceiveMessageWaitTimeSeconds": str(10),
            "VisibilityTimeout": str(300),
            "FifoQueue": str(True),
            "ContentBasedDeduplication": str(True),
        },
    )
    queues.add(retail_queue)
    print(f"Created FIFO queue with URL: {retail_queue.url}.")

    analytics_queue = sqs.create_queue(QueueName=prefix + "analytics", Attributes={})
    queues.add(analytics_queue)
    print(f"Created standard queue with URL: {analytics_queue.url}.")

    topic = fifo_topic_wrapper.create_fifo_topic("price-updates-topic.fifo")
    print(f"Created FIFO topic: {topic.attributes['TopicArn']}.")

    for q in queues:
        fifo_topic_wrapper.add_access_policy(q, topic.attributes["TopicArn"])

    print(f"Added access policies for topic: {topic.attributes['TopicArn']}.")

    for q in queues:
        sub = fifo_topic_wrapper.subscribe_queue_to_topic(
            topic, q.attributes["QueueArn"]
        )
        subscriptions.add(sub)

    print(f"Subscribed queues to topic: {topic.attributes['TopicArn']}.")

    input("Press Enter to publish a message to the topic.")

    message_id = fifo_topic_wrapper.publish_price_update(
        topic, '{"product": 214, "price": 79.99}', "Consumables"
    )

    print(f"Published price update with message ID: {message_id}.")

    # Clean up the subscriptions, queues, and topic.
    input("Press Enter to clean up resources.")
    for s in subscriptions:
        sns_wrapper.delete_subscription(s)

    sns_wrapper.delete_topic(topic)

    for q in queues:
        fifo_topic_wrapper.delete_queue(q)

    print(f"Deleted subscriptions, queues, and topic.")

    print("Thanks for watching!")
    print("-" * 88)



class FifoTopicWrapper:
    """Encapsulates Amazon SNS FIFO topic and subscription functions."""

    def __init__(self, sns_resource):
        """
        :param sns_resource: A Boto3 Amazon SNS resource.
        """
        self.sns_resource = sns_resource

    def create_fifo_topic(self, topic_name):
        """
        Create a FIFO topic.
        Topic names must be made up of only uppercase and lowercase ASCII letters,
        numbers, underscores, and hyphens, and must be between 1 and 256 characters long.
        For a FIFO topic, the name must end with the .fifo suffix.

        :param topic_name: The name for the topic.
        :return: The new topic.
        """
        try:
            topic = self.sns_resource.create_topic(
                Name=topic_name,
                Attributes={
                    "FifoTopic": str(True),
                    "ContentBasedDeduplication": str(False),
                    "FifoThroughputScope": "MessageGroup",
                },
            )
            logger.info("Created FIFO topic with name=%s.", topic_name)
            return topic
        except ClientError as error:
            logger.exception("Couldn't create topic with name=%s!", topic_name)
            raise error


    @staticmethod
    def add_access_policy(queue, topic_arn):
        """
        Add the necessary access policy to a queue, so
        it can receive messages from a topic.

        :param queue: The queue resource.
        :param topic_arn: The ARN of the topic.
        :return: None.
        """
        try:
            queue.set_attributes(
                Attributes={
                    "Policy": json.dumps(
                        {
                            "Version":"2012-10-17",		 	 	 
                            "Statement": [
                                {
                                    "Sid": "test-sid",
                                    "Effect": "Allow",
                                    "Principal": {"AWS": "*"},
                                    "Action": "SQS:SendMessage",
                                    "Resource": queue.attributes["QueueArn"],
                                    "Condition": {
                                        "ArnLike": {"aws:SourceArn": topic_arn}
                                    },
                                }
                            ],
                        }
                    )
                }
            )
            logger.info("Added trust policy to the queue.")
        except ClientError as error:
            logger.exception("Couldn't add trust policy to the queue!")
            raise error


    @staticmethod
    def subscribe_queue_to_topic(topic, queue_arn):
        """
        Subscribe a queue to a topic.

        :param topic: The topic resource.
        :param queue_arn: The ARN of the queue.
        :return: The subscription resource.
        """
        try:
            subscription = topic.subscribe(
                Protocol="sqs",
                Endpoint=queue_arn,
            )
            logger.info("The queue is subscribed to the topic.")
            return subscription
        except ClientError as error:
            logger.exception("Couldn't subscribe queue to topic!")
            raise error


    @staticmethod
    def publish_price_update(topic, payload, group_id):
        """
        Compose and publish a message that updates the wholesale price.

        :param topic: The topic to publish to.
        :param payload: The message to publish.
        :param group_id: The group ID for the message.
        :return: The ID of the message.
        """
        try:
            att_dict = {"business": {"DataType": "String", "StringValue": "wholesale"}}
            dedup_id = uuid.uuid4()
            response = topic.publish(
                Subject="Price Update",
                Message=payload,
                MessageAttributes=att_dict,
                MessageGroupId=group_id,
                MessageDeduplicationId=str(dedup_id),
            )
            message_id = response["MessageId"]
            logger.info("Published message to topic %s.", topic.arn)
        except ClientError as error:
            logger.exception("Couldn't publish message to topic %s.", topic.arn)
            raise error
        return message_id


    @staticmethod
    def delete_queue(queue):
        """
        Removes an SQS queue. When run against an AWS account, it can take up to
        60 seconds before the queue is actually deleted.

        :param queue: The queue to delete.
        :return: None
        """
        try:
            queue.delete()
            logger.info("Deleted queue with URL=%s.", queue.url)
        except ClientError as error:
            logger.exception("Couldn't delete queue with URL=%s!", queue.url)
            raise error
```
+ Weitere API-Informationen finden Sie in den folgenden Themen der *API-Referenz zum AWS SDK für Python (Boto3)*.
  + [CreateTopic](https://docs.aws.amazon.com/goto/boto3/sns-2010-03-31/CreateTopic)
  + [Veröffentlichen](https://docs.aws.amazon.com/goto/boto3/sns-2010-03-31/Publish)
  + [Abonnieren](https://docs.aws.amazon.com/goto/boto3/sns-2010-03-31/Subscribe)

------
#### [ SAP ABAP ]

**SDK für SAP ABAP**  
 Es gibt noch mehr dazu. GitHub Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das [AWS -Code-Beispiel-](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap/services/sns#code-examples) einrichten und ausführen. 
Erstellen Sie ein FIFO-Thema, abonnieren Sie eine Amazon-SQS-FIFO-Warteschlange für das Thema und veröffentlichen Sie eine Nachricht zu einem Amazon-SNS-Thema.  

```
    " Creates a FIFO topic. "
    DATA lt_tpc_attributes TYPE /aws1/cl_snstopicattrsmap_w=>tt_topicattributesmap.
    DATA ls_tpc_attributes TYPE /aws1/cl_snstopicattrsmap_w=>ts_topicattributesmap_maprow.
    ls_tpc_attributes-key = 'FifoTopic'.
    ls_tpc_attributes-value = NEW /aws1/cl_snstopicattrsmap_w( iv_value = 'true' ).
    INSERT ls_tpc_attributes INTO TABLE lt_tpc_attributes.

    TRY.
        DATA(lo_create_result) = lo_sns->createtopic(
               iv_name = iv_topic_name
               it_attributes = lt_tpc_attributes ).
        DATA(lv_topic_arn) = lo_create_result->get_topicarn( ).
        ov_topic_arn = lv_topic_arn.                                    " ov_topic_arn is returned for testing purposes. "
        MESSAGE 'FIFO topic created' TYPE 'I'.
      CATCH /aws1/cx_snstopiclimitexcdex.
        MESSAGE 'Unable to create more topics. You have reached the maximum number of topics allowed.' TYPE 'E'.
    ENDTRY.

    " Subscribes an endpoint to an Amazon Simple Notification Service (Amazon SNS) topic. "
    " Only Amazon Simple Queue Service (Amazon SQS) FIFO queues can be subscribed to an SNS FIFO topic. "
    TRY.
        DATA(lo_subscribe_result) = lo_sns->subscribe(
               iv_topicarn = lv_topic_arn
               iv_protocol = 'sqs'
               iv_endpoint = iv_queue_arn ).
        DATA(lv_subscription_arn) = lo_subscribe_result->get_subscriptionarn( ).
        ov_subscription_arn = lv_subscription_arn.                      " ov_subscription_arn is returned for testing purposes. "
        MESSAGE 'SQS queue was subscribed to SNS topic.' TYPE 'I'.
      CATCH /aws1/cx_snsnotfoundexception.
        MESSAGE 'Topic does not exist.' TYPE 'E'.
      CATCH /aws1/cx_snssubscriptionlmte00.
        MESSAGE 'Unable to create subscriptions. You have reached the maximum number of subscriptions allowed.' TYPE 'E'.
    ENDTRY.

    " Publish message to SNS topic. "
    TRY.
        DATA lt_msg_attributes TYPE /aws1/cl_snsmessageattrvalue=>tt_messageattributemap.
        DATA ls_msg_attributes TYPE /aws1/cl_snsmessageattrvalue=>ts_messageattributemap_maprow.
        ls_msg_attributes-key = 'Importance'.
        ls_msg_attributes-value = NEW /aws1/cl_snsmessageattrvalue( iv_datatype = 'String'
                                                                    iv_stringvalue = 'High' ).
        INSERT ls_msg_attributes INTO TABLE lt_msg_attributes.

        DATA(lo_result) = lo_sns->publish(
             iv_topicarn = lv_topic_arn
             iv_message = 'The price of your mobile plan has been increased from $19 to $23'
             iv_subject = 'Changes to mobile plan'
             iv_messagegroupid = 'Update-2'
             iv_messagededuplicationid = 'Update-2.1'
             it_messageattributes = lt_msg_attributes ).
        ov_message_id = lo_result->get_messageid( ).                    " ov_message_id is returned for testing purposes. "
        MESSAGE 'Message was published to SNS topic.' TYPE 'I'.
      CATCH /aws1/cx_snsnotfoundexception.
        MESSAGE 'Topic does not exist.' TYPE 'E'.
    ENDTRY.
```
+ Weitere API-Informationen finden Sie in den folgenden Themen der *API-Referenz zum AWS -SDK für SAP ABAP*.
  + [CreateTopic](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)
  + [Veröffentlichen](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)
  + [Abonnieren](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)

------

### Empfangen von Nachrichten von FIFO-Abonnements
<a name="fifo-receiving-messages"></a>

Sie können jetzt Preisaktualisierungen in den drei abonnierten Anwendungen erhalten. Wie in der gezeigt[Anwendungsbeispiel für ein Amazon SNS FIFO-Thema](fifo-example-use-case.md), ist der Eingangspunkt für jede Verbraucheranwendung die Amazon SQS SQS-Warteschlange, die von der entsprechenden AWS Lambda Funktion automatisch abgerufen werden kann. Wenn eine Amazon-SQS-Warteschlange eine Ereignisquelle für eine Lambda-Funktion ist, skaliert Lambda seine Pollerflotte nach Bedarf, um Nachrichten effizient zu verbrauchen.

Weitere Informationen finden Sie unter [Using AWS Lambda with Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) im *AWS Lambda Developer Guide*. Informationen zum Schreiben eigener Warteschlangenabfragen finden Sie unter [Empfehlungen für Amazon SQS SQS-Standard- und FIFO-Warteschlangen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-best-practices.html#sqs-standard-fifo-queue-best-practices) im *Amazon Simple Queue Service Developer Guide* und [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)in der *Amazon Simple Queue* Service API-Referenz.

## Verwenden AWS CloudFormation
<a name="fifo-topic-cfn"></a>

CloudFormation ermöglicht es Ihnen, eine Vorlagendatei zu verwenden, um eine Sammlung von AWS Ressourcen als eine Einheit zu erstellen und zu konfigurieren. Dieser Abschnitt enthält eine Beispieltemplate, das Folgendes erstellt:
+ Das Amazon-SNS-FIFO-Thema, das die Preisaktualisierungen verteilt
+ Die Amazon-SQS-FIFO-Warteschlangen, die diese Updates für die Groß- und Einzelhandel-Anwendung bereitstellen
+ Die Amazon-SQS-Standardwarteschlange für die Analyseanwendung, in der Datensätze gespeichert werden, die für Business Intelligence (BI) abgefragt werden können
+ Die Amazon-SNS-FIFO-Abonnements, die beide Warteschlangen mit dem Thema verbinden
+ [Filterrichtlinien](sns-subscription-filter-policies.md), die angeben, dass Abonnentenanwendungen nur die Preisaktualisierungen erhalten, die sie benötigen

**Anmerkung**  
Wenn Sie dieses Codebeispiel testen, indem Sie eine Nachricht im Thema veröffentlichen, stellen Sie sicher, dass Sie die Nachricht mit dem `business`-Attribut veröffentlichen. Geben Sie entweder `retail`oder `wholesale`als Attributwert an. Andernfalls wird die Nachricht herausgefiltert und nicht an die abonnierten Queues übermittelt. 

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "PriceUpdatesTopic": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "TopicName": "PriceUpdatesTopic.fifo",
        "FifoTopic": true,
        "ContentBasedDeduplication": false,
        "ArchivePolicy": {
        "MessageRetentionPeriod": "30"
        }
      }
    },
    "WholesaleQueue": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "QueueName": "WholesaleQueue.fifo",
        "FifoQueue": true,
        "ContentBasedDeduplication": false
      }
    },
    "RetailQueue": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "QueueName": "RetailQueue.fifo",
        "FifoQueue": true,
        "ContentBasedDeduplication": false
      }
    },
    "AnalyticsQueue": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "QueueName": "AnalyticsQueue"
      }
    },
    "WholesaleSubscription": {
      "Type": "AWS::SNS::Subscription",
      "Properties": {
        "TopicArn": {
          "Ref": "PriceUpdatesTopic"
        },
        "Endpoint": {
          "Fn::GetAtt": [
            "WholesaleQueue",
            "Arn"
          ]
        },
        "Protocol": "sqs",
        "RawMessageDelivery": "false",
        "FilterPolicyScope": "MessageBody",
        "FilterPolicy": {
          "business": [
            "wholesale"
          ]
        }
      }
    },
    "RetailSubscription": {
      "Type": "AWS::SNS::Subscription",
      "Properties": {
        "TopicArn": {
          "Ref": "PriceUpdatesTopic"
        },
        "Endpoint": {
          "Fn::GetAtt": [
            "RetailQueue",
            "Arn"
          ]
        },
        "Protocol": "sqs",
        "RawMessageDelivery": "false",
        "FilterPolicyScope": "MessageBody",
        "FilterPolicy": {
          "business": [
            "retail"
          ]
        }
      }
    },
    "AnalyticsSubscription": {
      "Type": "AWS::SNS::Subscription",
      "Properties": {
        "TopicArn": {
          "Ref": "PriceUpdatesTopic"
        },
        "Endpoint": {
          "Fn::GetAtt": [
            "AnalyticsQueue",
            "Arn"
          ]
        },
        "Protocol": "sqs",
        "RawMessageDelivery": "false"
      }
    },
    "SalesQueuesPolicy": {
      "Type": "AWS::SQS::QueuePolicy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": "sns.amazonaws.com"
              },
              "Action": [
                "sqs:SendMessage"
              ],
              "Resource": "*",
              "Condition": {
                "ArnEquals": {
                  "aws:SourceArn": {
                    "Ref": "PriceUpdatesTopic"
                  }
                }
              }
            }
          ]
        },
        "Queues": [
          {
            "Ref": "WholesaleQueue"
          },
          {
            "Ref": "RetailQueue"
          },
          {
            "Ref": "AnalyticsQueue"
          }
        ]
      }
    }
  }
}
```

Weitere Informationen zum Bereitstellen von AWS Ressourcen mithilfe einer CloudFormation Vorlage finden [Sie unter Erste Schritte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html) im *CloudFormation Benutzerhandbuch*.