J'ai 2 files d'attente, disons q1 et q2, qui correspondent aux échanges e1 et e2 avec la clé de liaison b1 et b2. Je veux exécuter des fonctions de consommation en parallèle, disons c1 et c2 qui écouteront respectivement q1 et q2. J'ai essayé de la manière suivante:Consommation multiple dans rabbitmq pour plusieurs files d'attente
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()
Cependant, il écoute uniquement la fonction c1 et la fonction c2, il ne reçoit pas exécuté. Comment puis-je exécuter les deux fonctions? Merci d'avance.
EDIT: J'ai méthode c1 et c1 dans 2 module différent (fichier)
Vous devriez utiliser le module de thread python ou une alternative au blocage de la connexion. – alphiii