Ich habe eine Aufgabe, in der ich versuche, alle Nachrichten in einer Kaninchen-Warteschlange zu bekommen. Ich muss nur GET, und nicht konsumieren. hier So ist der Code, ich bin mitVersuchen, Kaninchen-Nachricht ohne ack, aber keinen Erfolg zu bekommen
def some_function_name() :
connection = rabbitObj.get_connection()
channel = rabbitObj.get_channel(connection)
while True :
method_frame, header_frame, body = channel.basic_get(queue='error_queue', no_ack=False)
if method_frame:
#do some work
else :
break #breaking the loop
while(True):
some_function_name()
, wenn ich diesen Code ausführen, funktioniert es richtig, zuerst time.I alle Nachrichten in der Warteschlange erhalten und und alle Nachrichten bleiben in ‚Bereit‘ Zustand, aber wenn Ich führe die Schleife zum zweiten Mal durch, alle Nachrichten schalten die Änderung in den Status 'Unbestätigt' um.
Anforderung: Jedes Mal sollte ich nur Nachrichten bekommen, und sie sollten nicht unbestätigt gehen.
erste Schleife:
zweite Schleife:
Kann mir jemand helfen mit, was ich falsch mache, oder welche Veränderungen soll ich machen.
Vielen Dank im Voraus :)
Edit 1: Was @BarrensZeppelin ‚s Antwort, werden alle msgs verloren, wenn ich no_ack = True gesetzt. Überprüfen Sie den folgenden Screenshot:
Sie könnten stattdessen basic_cancel verwenden, damit Sie dieselbe Verbindung verwenden können. – BarrensZeppelin