Verbrauchen Sie mehrere Warteschlangen in python / pika

Ich versuche zu erstellen, die Verbraucher würden abonnieren Sie mehrere Warteschlangen, und dann die Verarbeitung von Nachrichten, wie Sie ankommen.

Das problem ist, dass, wenn es einige Daten, die bereits in der ersten Warteschlange verbraucht er die erste Warteschlange und geht nie zu konsumieren, die zweite Warteschlange.
Wenn jedoch der erste Warteschlange leer ist, wird es nicht gehen, um die nächste Warteschlange, und dann verbraucht beide Warteschlangen gleichzeitig.

Hatte ich erstmals umgesetzt einfädeln wollen aber Sie meiden es, wenn pika-Bibliothek macht es für mich ohne viel Komplexität. Unten ist mein code:

import pika

mq_connection = pika.BlockingConnection(pika.ConnectionParameters('x.x.x.x'))
mq_channel = mq_connection.channel()
mq_channel.basic_qos(prefetch_count=1)


def callback(ch, method, properties, body):
    print body
    mq_channel.basic_ack(delivery_tag=method.delivery_tag)

mq_channel.basic_consume(callback, queue='queue1', consumer_tag="ctag1.0")
mq_channel.basic_consume(callback, queue='queue2', consumer_tag="ctag2.0")
mq_channel.start_consuming()
  • Ich habe versucht deinen code mit der einzigen änderung, das hinzufügen einen logger um die Ausnahmen zu vermeiden, und erklärt die Warteschlangen. Der code funktioniert wie erwartet. Ich veröffentlicht einige Nachrichten in jeder Warteschlange und die Nachrichten bekam, weitergeleitet und wiederholt über die CLI
  • Hey, können Sie versuchen, mit pre-besiedelten Warteschlangen, und starten Sie dann den Verbraucher. Lassen Sie mich wissen, wenn dies auch wie erwartet funktioniert.
  • Ich habe gerade ausprobiert und es funktioniert nicht. Ich sehe nur die Nachrichten aus der ersten Warteschlange.
  • Das ist, was ich bin reden über. Komisch, nicht wahr? Haben Sie irgendwelche Ideen?
  • Ich weiß nicht viel über den python-client, das ist, warum ich, fragte Gavin Balg zu beantworten
  • Hat es die gleiche Funktion mit anderen clients? Kann Sie geben, es zu versuchen, in einen anderen client? Wenn dies pika konkret, Sie müssen erhöht werden. Obwohl Gavin gab einen guten Vorschlag, es wurde bereits umgesetzt.
  • Ich habe gerade versucht mit der php-amqplib client und es funktioniert wie erwartet. Ich pre-veröffentlichen von Nachrichten an beide queues und dann sind Sie alle verbraucht.
  • Gut zu wissen. Ich war über die Frage aufwerfen, Wann fand ich heraus, Gavin, ist Autor von pika. Nun, es scheint, es ist nach Gavin, mir zu helfen.
  • Möglich, Duplikat der Python und RabbitMQ - Beste Weg, um hören zu konsumieren Ereignisse, die von mehreren Kanälen?

InformationsquelleAutor user3295878 | 2014-07-01
Schreibe einen Kommentar