Wie kann man RabbitMQ-Nachrichten über Pika für eine begrenzte Zeit konsumieren?

8

Alle Beispiele in pika tutorial endet mit dem Aufruf des Clients start_consuming() , der eine Endlosschleife startet. Diese Beispiele funktionieren für mich.

Ich möchte jedoch nicht, dass mein Client für immer läuft. Stattdessen muss mein Client einige Zeit lang Nachrichten empfangen, z. B. 15 Minuten, und dann anhalten.

Wie erreiche ich das?

    
AlexC 17.11.2014, 16:53
quelle

1 Antwort

10

Sie können Nachrichten einzeln mit Ihren eigenen Schleifen konsumieren, sagen Sie, Sie haben ein channel und queue Setup. Im Folgenden wird überprüft, ob die Warteschlange leer ist. Wenn nicht, wird eine einzelne Nachricht daraus entfernt.

%Vor%

deklariert eine Warteschlange, die bereits existiert, und setzt die passiven Flags können Sie ihren Status abfragen. Als nächstes verarbeiten wir eine Nachricht:

%Vor%

Hier ist callback_func unser normaler Callback. Stellen Sie sicher, dass nicht den Rückruf mit der Warteschlange registriert, wenn Sie auf diese Weise arbeiten möchten.

%Vor%

Dadurch wird der manuelle Konsum seltsame Dinge machen. Ich habe gesehen, dass der queue_declare-Code tatsächlich eine Nachricht verarbeitet, wenn ich diesen Anruf zuvor getätigt habe.

    
Mike 17.11.2014, 17:08
quelle

Tags und Links