2016-08-08 7 views
0

Ich versuche, mit mehreren Warteschlangen in RabbitMQ verbunden zu bleiben. Jedes Mal, wenn ich eine neue Nachricht aus einer dieser Warteschlangen aufrufe, möchte ich einen externen Prozess erstellen.RabbitMQ: Ich nehme immer nur eine Nachricht aus mehreren Warteschlangen auf

Dieser Prozess wird einige Zeit dauern, um die Nachricht zu verarbeiten, und ich möchte nicht beginnen, eine weitere Nachricht aus dieser bestimmten Warteschlange zu verarbeiten, bis die, die ich zuvor erstellt habe, abgeschlossen ist. Wenn möglich, möchte ich keinen Prozess/Thread herumführen, nur um auf den externen Prozess zu warten, um den Server abzuschließen und zu bestätigen. Im Idealfall möchte ich diesen externen Prozess überprüfen und eventuell einen Identifikator übergeben, damit er sich mit RabbitMQ verbinden und die Nachricht bestätigen kann.

Ist es möglich, dieses System mit RabbitMQ zu entwerfen? Ich benutze Python und Pika, wenn dies für die Antwort relevant ist.

Danke!

Antwort

0

RabbitMQ kann dies tun.

Sie möchten nur aus der Warteschlange lesen, wenn Sie fertig sind - so einen Thread spinnen, der den externen Prozess erzeugen und beobachten kann, dann holen Sie die nächste Nachricht aus der Warteschlange, wenn der Prozess abgeschlossen ist. Sie können dann mehrere Threads parallel ausführen, um mehrere Warteschlangen zu verwalten.

Ich bin mir nicht sicher, was Sie wollen für ein Ack? Versuchen Sie zu verhindern, dass RabbitMQ der Warteschlange neue Elemente hinzufügt, wenn sie zu voll wird (weil ihre Elemente zu langsam/gar nicht verarbeitet werden)? Es gibt möglicherweise eine Möglichkeit, dies zu tun, wenn Sie Nachrichten zu den Warteschlangen hinzufügen. Bevor Sie ein Element hinzufügen, überprüfen Sie, ob die Anzahl der Nachrichten in dieser Warteschlange nicht "viel größer als der Durchschnitt aller Warteschlangen" ist.

+0

Ich habe versucht, es ohne einen externen Prozess zu tun, aber du hast Recht, ich sollte nur aus der Warteschlange Pop wenn ich bereit bin, ohne es zu sehr zu komplizieren. –

Verwandte Themen