Kurz- und Langabfragen 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.

Kurz- und Langabfragen in Amazon SQS

Amazon SQS bietet kurze und lange Abfrageoptionen für den Empfang von Nachrichten aus einer Warteschlange. Berücksichtigen Sie die Anforderungen Ihrer Anwendung an Reaktionsfähigkeit und Kosteneffizienz, wenn Sie zwischen diesen beiden Abfrageoptionen wählen:

  • Kurzes Polling (Standard) — Die ReceiveMessageAnfrage fragt eine Untergruppe von Servern ab (basierend auf einer gewichteten Zufallsverteilung), um verfügbare Nachrichten zu finden, und sendet eine sofortige Antwort, auch wenn keine Nachrichten gefunden wurden.

  • Langes PollingReceiveMessagefragt alle Server nach Nachrichten ab und sendet bis zum angegebenen Höchstwert eine Antwort, sobald mindestens eine Nachricht verfügbar ist. Eine leere Antwort wird nur gesendet, wenn die Wartezeit für die Abfrage abgelaufen ist. Diese Option kann die Anzahl leerer Antworten reduzieren und möglicherweise die Kosten senken.

In den folgenden Abschnitten werden die Details von Kurz- und Langabfragen erläutert.

Abrufen von Nachrichten durch Kurzabfragen

Wenn Sie Nachrichten aus einer Warteschlange (FIFO oder Standard) mithilfe von Kurzabfragen verarbeiten, nimmt Amazon SQS eine Stichprobe von einer Teilmenge seiner Server (basierend auf einer gewichteten Zufallsverteilung) vor und gibt nur Nachrichten von diesen Servern zurück. Daher werden für eine bestimmte ReceiveMessage-Anforderung möglicherweise nicht alle Nachrichten zurückgegeben. Wenn Sie jedoch weniger als 1000 Nachrichten in Ihrer Warteschlange haben, gibt die nächste Anfrage Ihre Nachrichten zurück. Wenn Sie das Abrufen aus Ihren Warteschlangen fortsetzen, nimmt Amazon SQS Stichproben aller seiner Server und Sie erhalten alle Ihre Nachrichten.

Das folgende Diagramm zeigt das Verhalten von Nachrichten bei Kurzabfragen, die von einer Standard-Warteschlange zurückgegeben werden, nachdem eine Ihrer Systemkomponenten eine Empfangsanforderung stellt. Amazon SQS nimmt Stichproben von mehreren seiner Server (grau dargestellt) und gibt die Nachrichten A, C, D und B von diesen Servern zurück. Nachricht E wird nicht für diese Anforderung zurückgegeben, sondern für eine nachfolgende Anforderung.

Stichprobenerhebung von Nachrichten mithilfe von kurzen (Standard-) Abfragen

Konsumieren von Nachrichten mithilfe von Langabfragen

Ist die Wartezeit für die ReceiveMessage-API-Aktion größer als 0, ist eine lange Abfrage wirksam. Die maximale Wartezeit für lange Abfragen beträgt 20 Sekunden. Mithilfe von Langabfragen können Sie die Kosten für die Verwendung von Amazon SQS reduzieren, indem Sie die Anzahl der leeren Antworten (wenn bei einer ReceiveMessage-Anfrage keine Nachrichten vorliegen) und fälschlicherweise leeren Antworten (wenn Nachrichten vorliegen, diese aber nicht in einer Antwort enthalten sind) eliminieren. Informationen zum Aktivieren von Langabfragen für eine neue oder vorhandene Warteschlange mithilfe der Amazon-SQS-Konsole finden Sie unter Konfiguration von Warteschlangenparametern mit der Amazon SQS SQS-Konsole. Bewährte Methoden finden Sie unter Einrichtung von Long Polling in Amazon SQS.

Die Langabfrage bietet die folgenden Vorteile:

  • Eliminieren leerer Antworten, da Amazon SQS wartet, bis eine Nachricht in der Warteschlange vorhanden ist, bevor eine Antwort gesendet wird. Sofern die Verbindung nicht abläuft, enthält die Antwort auf die ReceiveMessage-Anfrage mindestens eine der verfügbaren Nachrichten bis zur in der Aktion ReceiveMessage definierten maximalen Anzahl an Nachrichten. In seltenen Fällen erhalten Sie möglicherweise leere Antworten, auch wenn eine Warteschlange noch Nachrichten enthält, insbesondere wenn Sie einen niedrigen Wert für den ReceiveMessageWaitTimeSeconds-Parameter angeben.

  • Reduzieren Sie falsche Leerantworten, indem Sie alle – nicht nur eine Teilmenge – von Amazon-SQS-Servern abfragen.

  • Zurückgeben von Nachrichten, sobald sie verfügbar werden.

Informationen darüber, wie Sie überprüfen, ob eine Warteschlange leer ist, finden Sie unter Bestätigen, dass eine Amazon SQS SQS-Warteschlange leer ist.

Unterschiede zwischen Lang- und Kurzabfragen

Kurzabfragen werden ausgeführt, wenn der Parameter WaitTimeSeconds einer ReceiveMessage-Anfrage mit einer der beiden folgenden Methoden auf den Wert 0 festgelegt wurde:

  • Der ReceiveMessage-Aufruf legt WaitTimeSeconds auf 0 fest.

  • Der ReceiveMessage-Aufruf legt WaitTimeSeconds nicht fest, aber das Warteschlangenattribut ReceiveMessageWaitTimeSeconds ist auf 0 festgelegt.