Logik für die FIFO-Warteschlangenzustellung in Amazon SQS - Amazon Simple Queue Service

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.

Logik für die FIFO-Warteschlangenzustellung in Amazon SQS

Die folgenden Konzepte können Ihnen dabei helfen, das Senden von Nachrichten an und das Empfangen von Nachrichten von FIFO besser zu verstehen.

Senden von Nachrichten

Wenn nacheinander mehrere Nachrichten mit je einer eindeutigen Nachrichtendeduplizierungs-ID an eine FIFO-Warteschlange gesendet werden, speichert Amazon SQS die Nachrichten und bestätigt die Übertragung. Jede Nachricht kann dann in genau der Reihenfolge empfangen und verarbeitet werden, in der sie übertragen wurde.

Nachrichten werden in FIFO-Warteschlangen basierend auf einer Nachrichtengruppen-ID sortiert. Wenn mehrere Hosts (oder verschiedene Threads auf dem gleichen Host) Nachrichten mit derselben Nachrichtengruppen-ID an eine FIFO-Warteschlange senden, speichert Amazon SQS die Nachrichten in der Reihenfolge, in der sie für die Verarbeitung eingehen. Um sicherzustellen, dass Amazon SQS die Reihenfolge beim Senden und Empfangen von Nachrichten bewahrt, müssen Sie dafür sorgen, dass alle Nachrichten mit einer eindeutigen Nachrichtengruppen-ID gesendet werden.

Die FIFO-Warteschlangenlogik gilt nur pro Nachrichtengruppen-ID. Jede Nachrichtengruppen-ID stellt eine eindeutig geordnete Nachrichtengruppe innerhalb einer Amazon-SQS-Warteschlange dar. Für jede Nachrichtengruppen-ID werden alle Nachrichten in einer strikten Reihenfolge gesendet und empfangen. Nachrichten mit anderen Werten der Nachrichtengruppen-ID werden jedoch möglicherweise nicht der Reihenfolge nach gesendet und empfangen. Sie müssen die Nachrichtengruppen-ID einer Nachricht zuordnen. Wenn Sie keine Nachrichtengruppen-ID angeben, schlägt die Aktion fehl. Wenn Sie eine einzelne Gruppe von sortierten Nachrichten benötigen, stellen Sie dieselbe Nachrichtengruppen-ID für Nachrichten bereit, die an die FIFO-Warteschlange gesendet werden.

Empfangen von Nachrichten

Sie können keine Anforderung für den Empfang von Nachrichten mit einer bestimmten Nachrichtengruppen-ID senden.

Beim Empfangen von Nachrichten aus einer FIFO-Warteschlange mit mehreren Nachrichtengruppen-IDs versucht Amazon SQS zunächst, so viele Nachrichten mit derselben Nachrichtengruppen-ID wie möglich zurückzugeben. So können andere Konsumenten Nachrichten mit einer anderen Nachrichtengruppen-ID verarbeiten. Wenn Sie eine Nachricht mit einer Nachrichtengruppen-ID erhalten, werden keine weiteren Nachrichten für dieselbe Nachrichtengruppen-ID zurückgegeben, es sei denn, Sie löschen die Nachricht oder sie wird sichtbar.

Anmerkung

Mit dem Anforderungsparameter MaxNumberOfMessages der API-Aktion ReceiveMessage ist es möglich, bis zu 10 Nachrichten in einem einzelnen Aufruf zu empfangen. Diese Nachrichten behalten ihre FIFO-Reihenfolge bei und können dieselbe Nachrichtengruppen-ID haben. Wenn weniger als 10 Nachrichten mit derselben Nachrichtengruppen-ID verfügbar sind, erhalten Sie daher möglicherweise Nachrichten von einer anderen Nachrichtengruppen-ID im gleichen Stapel wie die 10 Nachrichten, aber nach wie vor in FIFO-Reihenfolge.

Mehrere Versuche

FIFO-Warteschlangen ermöglichen es dem Produzenten oder Verbraucher, mehrere Wiederholungen zu versuchen:

  • Wenn der Produzent eine fehlgeschlagene SendMessage-Aktion feststellt, kann er das Senden so oft wie nötig wiederholen und dabei dieselbe Nachrichten-Deduplizierungs-ID verwenden. Unter der Annahme, dass der Produzent vor Ablauf des Deduplizierungsintervalls mindestens eine Bestätigung erhält, wirken sich mehrere Wiederholungsversuche weder auf die Reihenfolge der Nachrichten aus, noch führen sie zu Duplikaten.

  • Wenn der Verbraucher eine fehlgeschlagene ReceiveMessage-Aktion feststellt, kann er sie so oft wie nötig wiederholen und dabei dieselbe ID für den Versuch verwenden, die Anfrage zu empfangen. Unter der Annahme, dass der Verbraucher mindestens eine Bestätigung erhält, bevor die Sichtbarkeitszeitbeschränkung abläuft, wirken sich mehrere Wiederholungsversuche nicht auf die Reihenfolge der Nachrichten aus.

  • Wenn Sie eine Nachricht mit einer Nachrichtengruppen-ID erhalten, werden keine weiteren Nachrichten für dieselbe Nachrichtengruppen-ID zurückgegeben, es sei denn, Sie löschen die Nachricht oder sie wird sichtbar.