Ich arbeite an einer Anwendung, deren Workflow verwaltet wird, indem Nachrichten in SQS mit Boto übergeben werden.Wie erhalten Sie alle Nachrichten in der Amazon SQS-Warteschlange mithilfe der Boto-Bibliothek in Python?
Meine SQS-Warteschlange wächst allmählich, und ich habe keine Möglichkeit zu überprüfen, wie viele Elemente es enthalten soll.
Jetzt habe ich einen Daemon, der regelmäßig die Warteschlange abfragt und überprüft, ob ich eine feste Größe von Elementen habe. Betrachten wir zum Beispiel die folgende „Warteschlange“:
q = ["msg1_comp1", "msg2_comp1", "msg1_comp2", "msg3_comp1", "msg2_comp2"]
Jetzt will ich überprüfen, ob ich „msg1_comp1“ haben „msg2_comp1“ und „msg3_comp1“ in der Warteschlange zusammen an einem gewissen Punkt in der Zeit, aber ich don‘ Ich kenne die Größe der Warteschlange.
Nach über die API suchen, es scheint, dass Sie entweder nur ein Element bekommen, oder eine festgelegte Anzahl von Elementen in der Warteschlange, aber nicht alle:
>>> rs = q.get_messages()
>>> len(rs)
1
>>> rs = q.get_messages(10)
>>> len(rs)
10
Ein Vorschlag in den Antworten vorgeschlagen werden würde bekomme zum Beispiel 10 Nachrichten in einer Schleife, bis ich nichts zurückbekomme, aber Nachrichten in SQS haben ein Sichtbarkeits-Timeout, was bedeutet, dass wenn ich Elemente aus der Warteschlange abrufe, sie nicht wirklich entfernt werden, sie werden nur für kurze Zeit unsichtbar sein von Zeit.
Gibt es eine einfache Möglichkeit, alle Nachrichten in der Warteschlange zu erhalten, ohne zu wissen, wie viele es sind?
kann ich nicht wirklich tun, da die Nachrichten in SQS einen Sichtbarkeits Timeout haben, so dass, wenn ich zum ersten Mal erhalten 10 Nachrichten, dann einige Male eine Schleife, beim nächsten Mal bekomme ich die gleichen 10 Nachrichten seit dem Timeout. Ich denke darüber nach, 'dump()' zu verwenden, aber ich muss die Datei danach lesen, das scheint albern zu sein, fehlt mir etwas? (Ich könnte das Sichtbarkeitszeitlimit auf eine sehr lange Zeit setzen, aber das scheint hässlich). –
@linker - Sie haben gesagt, Sie müssen nach 'n' spezifischen Nachrichten suchen. bedeutet das, dass es einige Übereinstimmungskriterien gibt, mit denen Sie jede Nachricht vergleichen? –
Sorry, wenn das verwirrend war, habe ich meinen Beitrag aktualisiert. –