Mit dem Web-Service Amazon Simple Queue Service (Amazon SQS) haben Sie Zugriff auf eine Warteschlange, in der Nachrichten für die weitere Bearbeitung bereitgehalten werden. Mit Amazon SQS können Sie schnell Anwendungen für Nachrichtenwarteschlangen erstellen, die auf jedem Computer mit Internetverbindung ausgeführt werden können.

Amazon SQS bietet eine zuverlässige, sichere und hochgradig skalierbare gehostete Warteschlange zum Speichern von Nachrichten, während diese zwischen Computern weitergeleitet werden. Mit Amazon SQS können Sie Daten zwischen verteilten Anwendungskomponenten, die verschiedene Aufgaben ausführen, verschieben. Dabei gehen keine Nachrichten verloren und es muss nicht jede Komponente stets verfügbar sein. Sie können vertrauliche Daten zwischen Anwendungen senden, indem Sie die serverseitige Verschlüsselung (SSE) von Amazon SQS mit dem AWS Key Management Service (KMS) nutzen.

Amazon SQS vereinfacht das Erstellen einer verteilten Anwendung mit entkoppelten Komponenten und arbeitet eng mit Amazon Elastic Compute Cloud (Amazon EC2) und anderen AWS-Infrastruktur-Web-Services zusammen.

Amazon SQS bietet zwei Warteschlangentypen für unterschiedliche Anwendungsanforderungen an:

Standardwarteschlangen
Amazon SQS stellt Standardwarteschlangen als Standardtyp zur Verfügung. Mit einer Standardwarteschlange haben Sie eine beinahe unbegrenzte Anzahl von Transaktionen pro Sekunde zur Verfügung. Bei Standardwarteschlangen wird die mindestens einmal erfolgende Zustellung von Nachrichten garantiert. Gelegentlich kann es jedoch vorkommen, dass (aufgrund der hoch verteilten Architektur, die den hohen Durchsatz ermöglicht) mehr als eine Kopie einer Nachricht nicht der Reihenfolge nach zugestellt wird. Standardwarteschlangen bieten eine Sortierung mit bester Leistung, die sicherstellt, dass Nachrichten prinzipiell in der gleichen Reihenfolge zugestellt werden, wie sie gesendet wurden.

FIFO Warteschlangen – Neu!
Die FIFO-Warteschlange ergänzt die Standardwarteschlange. Die wichtigsten Funktionen dieses Warteschlangentyps sind die FIFO-Übermittlung (First-in-First-out) und die genau einmalige Verarbeitung von Nachrichten: Die Reihenfolge, in der Nachrichten verschickt und empfangen werden, wird genau beibehalten. Eine Nachricht wird einmal übermittelt und ist solange verfügbar, bis ein Kunde sie verarbeitet und gelöscht hat. In der Warteschlange befinden sich keine Duplikate. FIFO-Warteschlangen unterstützen außerdem Nachrichtengruppen, die in einer einzelnen Warteschlange multiple Datenströme zulassen. Die Nachrichtenreihenfolge bleibt dabei unverändert. FIFO-Warteschlangen sind pro API-Aktion auf 300 Transaktionen pro Sekunde (TPS) beschränkt. Ansonsten bieten sie jedoch alle Funktionen herkömmlicher Warteschlangen.

 

Kostenlos bei AWS einsteigen

Kostenloses Konto erstellen
Oder bei der Konsole anmelden

Das kostenlose Kontingent für AWS bei Amazon Simple Queue Service (SQS) umfasst 1 Mio. Anforderungen.

Details zum kostenlosen Kontingent für AWS anzeigen »

Capital One informiert darüber, warum es Amazon SQS verwendet, um die wichtigsten Banking-Anwendungen in die Cloud zu verlagern.

sqs_thumb_reInvent2016-migrating-ent-messaging

Amazon SQS kann einfach über die AWS Management Console aufgerufen werden, mit der Benutzer eine webbasierte Point-and-Click-Oberfläche zur Einrichtung und Verwaltung von Amazon SQS erhalten.

Amazon SQS verwendet eine benutzerfreundliche und äußerst flexible Schnittstelle. Folgende Anforderungen stehen zur Verfügung:

Grundlegender Mitteilungsbetrieb

  • SendMessage – Dient zum Senden an eine bestimmte Warteschlange.
  • ReceiveMessage – Dient zum Zurückgeben einer oder mehrerer Mitteilungen aus einer bestimmten Warteschlange.
  • DeleteMessage – Dient zum Entfernen einer zuvor aus einer bestimmten Warteschlange empfangenen Nachricht.
  • ChangeMessageVisibility: Dient zum Ändern der Zeitbeschränkung für die Sichtbarkeit einer zuvor empfangenen Nachricht.

Batch-Nachrichtenbetrieb

  • SendMessageBatch – Dient zum Senden mehrerer Nachrichten an eine bestimmte Warteschlange.
  • DeleteMessage – Dient zum Entfernen mehrerer zuvor aus einer bestimmten Warteschlange empfangenen Nachrichten.
  • ChangeMessageVisibility – Dient zum Ändern der Zeitbeschränkung für die Sichtbarkeit mehrerer zuvor empfangener Nachrichten.

Grundlegende Warteschlangenverwaltung

  • CreateQueue – Dient zum Erstellen von Warteschlangen zur Verwendung mit dem AWS-Konto.
  • ListQueues – Dient zum Auflisten vorhandener Warteschlangen.
  • DeleteQueue – Dient zum Löschen einer Warteschlange.
  • PurgeQueue – Alle Nachrichten in einer Warteschlange löschen.

Erweiterte Warteschlangenverwaltung

  • SetQueueAttributes – Dient der Steuerung der Warteschlangeneinstellungen wie der Zeitbeschränkung für die Sichtbarkeit (Zeitdauer, während der Nachrichten nach dem Lesen für ein erneutes Lesen gesperrt sind), dem Verzögerungswert oder den Parametern für unzustellbare Warteschlangen.
  • GetQueueAttributes – Bietet Informationen über die Warteschlange wie z. B. die Zeitbeschränkung für die Sichtbarkeit, die Anzahl der Nachrichten in der Warteschlange oder die maximale Nachrichtengröße.
  • GetQueueUrl – Dient zum Abrufen der URL der Warteschlange.
  • AddPermission – Dient zum Hinzufügen der Warteschlangenfreigabe für ein anderes AWS-Konto für eine angegebene Warteschlange.
  • RemovePermission – Dient zum Entfernen eines AWS-Kontos aus der Warteschlangenfreigabe für eine angegebene Warteschlange.
  • ListDeadLetterSourceQueues – Auflistung der Warteschlangen, die zu einer unzustellbaren Warteschlange gehören.

Weitere Informationen erhalten Sie unter Amazon SQS-API-Referenz.

In Amazon SQS gespeicherte Mitteilungen haben einen Zyklus, der leicht zu verwalten ist und dabei sicherstellt, dass alle Mitteilungen verarbeitet werden.

  1. Ein System, das eine Nachricht senden muss, wählt eine Amazon SQS-Warteschlange aus und verwendet "SendMessage", um eine neue Mitteilung an diese Warteschlange zu senden.
  2. Ein anderes System, das Nachrichten verarbeitet, benötigt weitere Nachrichten zur Verarbeitung, weshalb es "ReceiveMessage" aufruft, woraufhin diese Nachricht zurückgegeben wird.
  3. Sobald eine Nachricht von "ReceiveMessage" zurückgegeben wurde, wird sie nicht durch einen weiteren Abruf von "ReceiveMessage" zurückgegeben, bis die Zeitbeschränkung für die Sichtbarkeit abgelaufen ist. Auf diese Weise wird verhindert, dass mehrere Kunden dieselbe Nachricht gleichzeitig verarbeiten.
  4. Wenn das verarbeitende System die Arbeit an der Nachricht erfolgreich abgeschlossen hat, ruft es "DeleteMessage" auf, woraufhin die Nachricht aus der Warteschlange entfernt wird, sodass sie nicht mehr weiter verarbeitet werden kann. Wenn das System die Nachricht nicht verarbeiten kann, wird sie von einem anderen Aufruf von "ReceiveMessage" gelesen, sobald die Zeitbeschränkung für die Sichtbarkeit abgelaufen ist.
  5. Wenn Sie eine Warteschlange für unzustellbare Nachrichten einer Quellwarteschlange zuordnet haben, werden Nachrichten nach Erreichen der angegebenen Anzahl maximaler Zustellungsversuche in die Warteschlange für unzustellbare Nachrichten verschoben.
  • Entwickler können eine beliebige Anzahl von Amazon SQS-Warteschlangen mit einer unbegrenzten Anzahl von Nachrichten erstellen.
    • Eine Warteschlange kann in allen Regionen erstellt werden.
    • Die Nutzdaten der Nachricht können bis zu 256 KB groß sein und Text in einem beliebigen Format enthalten. Jeder 64-KB-Block der Nutzdaten wird als 1 Anforderung in Rechnung gestellt. Ein einzelner API-Aufruf mit einer Nutzdatengröße von 256 KB wird als vier Anforderungen in Rechnung gestellt.
    • Nachrichten können in Stapeln von bis zu 10 Nachrichten oder 256 KB gesendet, empfangen und gelöscht werden. Stapel kosten genauso viel wie einzelne Nachrichten, was heißt, dass ihre Nutzung für Kunden noch wirtschaftlicher sein kann.
    • Um Nachrichten zu senden, die größer sind als 256 KB, können Sie Amazon SQS Extended Client Library für Java nutzen. Dabei wird Amazon S3 verwendet, um den Nachrichteninhalt zu speichern.  Mit SQS wird eine Referenz bezüglich des Nachrichteninhalts gesendet.
    • Mit einer Long Polling genannten Methode werden irrelevante Abfragen verringert, wodurch Sie Kosten minimieren und neue Nachrichten schnellstmöglich empfangen können. Wenn Ihre Warteschlange leer ist, warten Long Poll-Anforderungen bis zu 20 Sekunden auf den Eingang der nächsten Nachricht. Long Poll-Anforderungen kosten dasselbe wie herkömmliche Anforderungen.
    • Nachrichten können bis zu 14 Tage in Warteschlangen verbleiben.
    • Nachrichten können gleichzeitig gesendet und gelesen werden.
  • Wenn eine Mitteilung empfangen wird, wird sie während der Verarbeitung gesperrt. Auf diese Weise wird verhindert, dass andere Computer dieselbe Mitteilung gleichzeitig verarbeiten. Schlägt die Verarbeitung der Mitteilung fehl, läuft die Sperre ab und die Mitteilung ist wieder verfügbar. Für den Fall, dass die Anwendung mehr Zeit für die Verarbeitung benötigt, kann die Zeitbeschränkung der Sperre dynamisch über die Operation "ChangeMessageVisibility" geändert werden.
  • Entwickler können Amazon SQS-Warteschlagen anonym oder mit bestimmten AWS-Kontos völlig sicher teilen. Die Freigabe von Warteschlangen kann außerdem nach IP-Adresse und Tageszeit beschränkt werden.
  • NEU! Eine serverseitige Verschlüsselung (SSE) schützt die Nachrichteninhalte in Amazon SQS-Warteschlangen mit Schlüsseln, die im AWS Key Management Service (AWS KMS) verwaltet werden. SSE verschlüsselt Nachrichten, sobald sie bei Amazon SQS eingehen. Die Nachrichten werden verschlüsselt gespeichert und Amazon SQS entschlüsselt sie, wenn sie an einen autorisierten Kunden gesendet werden.
  • In Kombination mit Amazon Simple Notification Service (SNS) können Entwickler identische Nachrichten an mehrere SQS-Warteschlangen "verbreiten". Durch die Verbreitung wird eine in einem SNS-Thema veröffentlichte Nachricht gleichzeitig auf mehrere SQS-Warteschlangen verteilt.  Mithilfe der Verbreitung können Entwickler Anwendungen entwerfen, die sich parallele, asynchrone Verarbeitungsprozesse zu Nutze machen.  So könnten Entwickler beispielsweise immer, wenn ein neues Abbild hochgeladen wird, eine Nachricht in einem Thema veröffentlichen.  Unabhängige Prozesse, die aus verschiedenen Warteschlangen gelesen werden, könnten Thumbnails generieren, Abbilderkennungen durchführen und zum Abbild gehörige Metadaten speichern. SNS unterstützt derzeit noch nicht die Reihenfolgenerstellung in FIFO, sodass die Verbreitung über FIFO-Warteschlangen nicht unterstützt wird.
  • Mit unzustellbaren Wartschlangen können Entwickler fehlgeschlagene Nachrichten (Nachrichten, die vom Benutzer nicht erfolgreich verarbeitet wurden) handhaben. Wenn die maximale Empfangsanzahl für eine Nachricht überschritten wird, wird sie in die Warteschlange für unzustellbare Nachrichten verschoben, die der ursprünglichen Warteschlange zugeordnet ist. Entwickler können getrennte Nutzerprozesse für Warteschlangen für unzustellbare Nachrichten einrichten, mit deren Hilfe untersucht und nachvollzogen werden kann, warum Nachrichten nicht zugestellt werden. Die Warteschlangen für unzustellbare Nachrichten müssen vom selben Typ wie die ursprüngliche Warteschlange sein (Standard oder FIFO).

Die Warteschlangendienste für Nachrichten von Amazon SQS können mit anderen AWS-Services wie Redshift, DynamoDB, RDS, EC2, ECS, Lambda und S3 genutzt werden, um verteilte Anwendungen skalierbarer und zuverlässiger zu gestalten. Es folgen einige gängige Entwurfsmuster:

  • Verarbeitungswarteschlangen: Dienen zum Entkoppeln von Komponenten einer verteilten Anwendung, die ggf. nicht gleichzeitig denselben Verarbeitungsumfang leisten.
  • Puffer- und Stapeloperationen: Dienen zum Hinzufügen von Skalierbarkeit und Zuverlässigkeit zu Ihrer Architektur und zum Abfedern vorübergehender Volumenspitzen, ohne Nachrichten zu verlieren oder die Latenz zu verlängern.
  • Auslagerung von Anforderungen: Dient zum Verschieben langsamer Vorgänge aus interaktiven Anforderungspfaden durch Einreihen der Anforderung in eine Warteschlange.
  • Verbreiten: Kombinieren von SQS mit Simple Notification Service (SNS) zum parallelen Senden identischer Kopien einer Nachricht an mehrere Warteschlangen.
  • Priorität: Verwenden von separaten Warteschlangen, damit für die vorhandene Arbeit Prioritäten gesetzt werden können.
  • Skalierbarkeit: Da Nachrichtenwarteschlangen einen Prozess entkoppeln, kann die Senden- bzw. Empfangen-Rate der Nachrichten leicht skaliert werden – durch das einfache Hinzufügen eines weiteren Prozesses. 
  • Resilienz: Wenn ein Teil des Systems ausfällt, ist nicht automatisch das komplette System betroffen. Nachrichtenwarteschlangen entkoppeln Komponenten in einem System. Wenn ein Prozess, der Nachrichten aus einer Warteschlange liest, fehlschlägt, können trotzdem weiterhin Nachrichten zu dieser Warteschlange hinzugefügt werden. Sie werden verarbeitet, wenn das System wiederhergestellt ist.

Die Nutzung dieses Service unterliegt der Kundenvereinbarung von Amazon Web Services.