2016-04-01 7 views
1

In SQS ist für eine einzelne Nachricht die maximale Anzahl von ReceiveMessage Anforderungen, die innerhalb der maximalen Aufbewahrungsfrist einer Warteschlange platziert werden können, festgelegt.Maximale Anzahl an ReceiveMessage-Anforderungen für eine Nachricht in SQS

Ich suchte viel, konnte aber keine Nummer für die Max Cap bekommen.

Ist es unendlich?

+0

Fragen Sie nach der maximalen Anzahl von Nachrichten, die in eine Warteschlange gestellt werden können, oder nach der maximalen Anzahl von Malen, die 'ReceiveMessage' aufgerufen werden kann? –

+0

@JohnRotenstein: ja Ich brauche die maximale Anzahl der Male, die ReceiveMessage aufgerufen werden kann. – sarathprasath

Antwort

0

Es gibt kein Limit in der Dokumentation der message lifecycle erwähnt, nur dass die Nachricht gelöscht wird, wenn die maximale Nachrichtenverweildauer (Standard 4 Tage, max 14 Tage) für die Warteschlange abläuft.

Es scheint bis zu diesem Zeitpunkt im Wesentlichen unendlich zu sein, es sei denn, Sie konfigurieren die Warteschlange zum Verschieben von Nachrichten in eine separate "Dead Letter Queue" nach einer konfigurierbaren maximalen Anzahl von Empfängen ... und in diesem Fall die maximale Anzahl von empfängt zulässig sind - einschließlich der Häufigkeit, mit der diese bestimmte Nachricht beim Anzeigen von Warteschlangennachrichten in der Konsole angezeigt wird - 1000. (Minimum ist natürlich 1).

See: Using Amazon SQS Dead Letter Queues

Es scheint keine dokumentierte Grenze für die maximale Anzahl, wie oft eine Meldung, sonst empfangen werden kann zu sein, aber es ist eine andere Grenze, die eine Warteschlange drosseln würde, in der Nachrichten wiederholt empfangen wurden und ihr Sichtbarkeits-Timeout konnte wiederholt ablaufen (was dazu führte, dass sie wieder sichtbar wurden) - jede Warteschlange unterstützt eine unbegrenzte Anzahl von Nachrichten in der Warteschlange, aber jede Warteschlange is limited to 120,000 messages in flight at any one time (wartet darauf, dass ihr Sichtbarkeits-Timeout abläuft).

Anderenfalls scheint die maximale Anzahl der empfangenen Nachrichten nur durch die maximale Nachrichtenspeicherzeit multipliziert mit dem Sichtbarkeits-Timeout begrenzt zu sein. Mit den Standardwerten von 4 Tagen und 30 Sekunden wäre das 4 (60 & dividiere; 30) = 11.520.

In einer Anwendung, die sich gut benimmt, möchten Sie normalerweise nicht, dass eine Nachricht hunderte oder tausende Male empfangen wird, aber in einer fehlerhaften Anwendung möchten Sie nicht, dass Nachrichten verloren gehen, bevor Sie das Problem erkannt haben Die Annahme, die ich mache, bis es anders bewiesen werden kann, ist, dass es keine harte Grenze gibt.

Ihr Code könnte auch den Wert ApproximateReceiveCountattribute untersuchen, um eine Vorstellung davon zu erhalten, wie oft die Nachricht übermittelt wurde, wenn Sie Nachrichten mit Werten über einem bestimmten Schwellenwert auf bestimmte Weise behandeln wollten. Dieser Leistungsindikator enthält die Häufigkeit, mit der die Nachricht in "Nachrichten anzeigen" in der Konsole aufgezählt wurde, da die Konsole Nachrichten empfängt und dann ihr Sichtbarkeits-Timeout zurücksetzt, genau wie bei einer Anwendung.

Wenn Sie diesen Wert verwenden möchten, beachten Sie, dass SQS-Nachrichten sowohl "Attribute" (System) als auch "Nachrichtenattribute" (benutzerdefiniert) haben.

+0

Ich bin mir der Dead-Letter-Warteschlange und Nachrichtenspeicherungszeitraum voll bewusst, aber ich bin wirklich neugierig auf das Limit, wenn es nicht unendlich – sarathprasath

+0

I ist erwähnt die Dead-Letter-Warteschlange Fähigkeit für Kontrast, da es eine dokumentierte Grenze, sowie für zukünftige Leser haben. Wie ich bereits angedeutet habe, gibt es keine offensichtliche dokumentierte Grenze. Vielleicht hat @JohnRotenstein eine Insider-Spur und kann eine offizielle Antwort finden. –

Verwandte Themen