Ich habe 2 Warteschlangen, sagen q1 und q2, die e1 und e2 Austausch mit Binding Key b1 und b2 entspricht. Ich möchte Verbraucherfunktionen parallel laufen lassen, sagen wir c1 und c2, die auf q1 bzw. q2 hören. Ich habe versucht, die folgende Art und Weise:Mehrere Verbraucher in Rabbitmq für mehrere Warteschlange
def c1():
connection = pika.BlockingConnection(pika.ConnectionParameters(host=constants.rmqHostIp))
channel = connection.channel()
channel.exchange_declare(exchange='e1', durable='true',
type='topic')
result = channel.queue_declare(durable='false', queue='q1')
queue_name = result.method.queue
binding_key = "b1"
channel.queue_bind(exchange='e1',
queue=queue_name,
routing_key=binding_key)
channel.basic_consume(callback,queue=queue_name,no_ack=False)
channel.start_consuming()
def c2():
connection = pika.BlockingConnection(pika.ConnectionParameters(host=constants.rmqHostIp))
channel = connection.channel()
channel.exchange_declare(exchange='e2', durable='true',
type='topic')
result = channel.queue_declare(durable='false', queue='q2')
queue_name = result.method.queue
binding_key = "b2"
channel.queue_bind(exchange=e1,
queue=queue_name,
routing_key=binding_key)
channel.basic_consume(callback,queue=queue_name,no_ack=False)
channel.start_consuming()
if __name__ == '__main__':
c1()
c2()
Es wird jedoch nur zu c1 Funktion und c2 Funktion hören, nicht ausgeführt zu werden. Wie kann ich beide Funktionen ausführen? Vielen Dank im Voraus.
EDIT: Ich habe Methode c1 und c1 in 2 verschiedenen Modul (Datei)
Sie sollten Python-Threading-Modul oder eine Alternative zum Blockieren der Verbindung verwenden. – alphiii