Werden verzögerte Warteschlangen-Nachrichten in SQS als "In Flight" gezählt?

8

Ich arbeite an einem Projekt, in dem ich ein Amazon verwenden möchte SQS-Verzögerungswarteschlange .

Ich habe ein bisschen Schwierigkeiten, genau zu verstehen, was mit "Inflight" -Nachrichten gemeint ist.

Es gibt eine Notiz in der Dokumentation, die besagt:

  

Hinweis

     

Es gibt ein Limit von 120.000 für die Anzahl der Inflight-Nachrichten pro   Warteschlange. Nachrichten sind inflight, nachdem sie von der   Warteschlange, wurde aber noch nicht aus der Warteschlange gelöscht. Wenn Sie das erreichen   120.000 Limit, erhalten Sie eine OverLimit Fehlermeldung von Amazon   SQS. Um zu vermeiden, das Limit zu erreichen, sollten Sie die Nachrichten löschen   aus der Warteschlange, nachdem sie verarbeitet wurden. Sie können auch erhöhen   die Anzahl der Warteschlangen, die Sie zum Verarbeiten der Nachrichten verwenden.

Aber ich bin mir nicht ganz sicher, was als "von der Warteschlange empfangen" gilt. Wo wird im Flussdiagramm eine Nachricht von der Warteschlange "empfangen"?

Ich werde viele Nachrichten bewusst verzögert (im ersten blauen Balken des Diagramms) haben, aber nicht viele in der "Sichtbarkeits-Timeout" -Phase (zweiter blauer Balken).

Zählen beide blauen Balken als "Inflight" -Nachrichten? Oder ist eine Nachricht nur "inflight", nachdem sie von einer ReceiveMessage -Anforderung (rechts neben "Nachricht zurückgegeben" am Ende des Diagramms) "empfangen" wurde?

    
Brad Dwyer 19.02.2014, 21:34
quelle

1 Antwort

9

Nachrichten, die in eine Verzögerungswarteschlange fallen, werden nicht sofort als "In Flight" gezählt, da sie für alle Benutzer unsichtbar sind. Sie werden nicht als "Verfügbar" oder "Im Flug" gezählt, sie sind einfach nicht für Sie sichtbar.

Sie können dies mit einem einfachen Experiment in der AWS SQS-Konsole überprüfen:

  • Erstellen Sie eine Verzögerungswarteschlange, und öffnen Sie zwei Registerkarten für die SQS-Konsole.
  • Löschen Sie mehrere Nachrichten in die Warteschlange, indem Sie mit der rechten Maustaste auf die Warteschlange klicken und "Eine Nachricht senden" auswählen. Sie sollten bemerken, dass diese Nachrichten nicht als "Verfügbar" oder "In Flight" gezählt werden, bis die Verzögerung abläuft Punkt werden sie "Verfügbar."

Wie die Dokumentation sagt, sind Nachrichten "In Flight", nachdem sie empfangen wurden (während sie von einer Anwendung bearbeitet werden), aber bevor sie gelöscht wurden. Wenn sie nicht gelöscht werden, wenn die Anwendung mit ihnen fertig ist, kehren sie in den Zustand "Verfügbar" zurück.

Sie können dies mit einem zweiten Experiment in der AWS SQS-Konsole überprüfen:

  • Öffnen Sie zwei Registerkarten für die AWS SQS-Konsole. Erstellen Sie einige Nachrichten in Ihrer Warteschlange und warten Sie, bis sie verfügbar sind.
  • Klicken Sie in Ihrem ersten Tab mit der rechten Maustaste auf die Warteschlange und wählen Sie "Nachrichten anzeigen / löschen". In diesem Experiment ist der Dialog "Nachrichten anzeigen / löschen" analog zu Ihrer Anwendung - er verarbeitet die Warteschlangennachricht während der Anzeige. Setzen Sie das Textfeld "Abfragewarteschlange für Nachrichten" auf eine ausreichend lange Dauer und starten Sie die Abfrage nach Nachrichten. Wenn Ihre Nachrichten verfügbar sind, sollten sie sofort angezeigt werden.
  • Aktualisieren Sie auf Ihrer zweiten Registerkarte die SQS-Konsole. Sie sollten feststellen, dass diese Nachrichten jetzt "In Flight" sind, da die Nachrichten empfangen wurden, während Sie sie auf der anderen Registerkarte anzeigen.

Da Ihre "In Flight" -Nachrichten Nachrichten sind, die derzeit von Ihrer Anwendung verarbeitet werden, sollte die Nachrichtentiefe der Warteschlange in dieser Spalte nicht wirklich sehr groß werden. Löschen Sie Ihre Nachrichten, nachdem Sie sie bearbeitet haben (oder versuchen Sie es erneut - & gt; behandeln Sie sie dann und löschen / verschieben Sie sie in eine andere Warteschlange, um eine Ausnahme zu verarbeiten), und Sie sollten einverstanden sein.

    
Anthony Neace 19.02.2014, 22:03
quelle