RabbitMQ consommer un message si existe et quitter
Je suis en cours d'exécution de code python pour envoyer et recevoir de RabbitMQ file d'attente à partir d'une autre application où je ne peux me permettre de filetage.
C'est très newbie question mais, est-il possible de simplement vérifier si on a le message et si il n'y a pas alors tout simplement arrêter l'écoute ? Comment dois-je changer de base exemple "Hello world" pour une telle tâche? Actuellement j'ai réussi à arrêter de consommer si je reçois un message, mais si il n'y a pas de messages de ma méthode receive() juste à continuer à attendre. Comment à force de ne pas attendre si il n'y a pas de messages? Ou peut-être attendre seulement pour la période de temps donnée?
import pika
global answer
def send(msg):
connection = pika.BlockingConnection(pika.ConnectionParameters())
channel = connection.channel()
channel.queue_declare(queue='toJ')
channel.basic_publish(exchange='', routing_key='toJ', body=msg)
connection.close()
def receive():
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='toM')
channel.basic_consume(callback, queue='toM', no_ack=True)
global answer
return answer
def callback(ch, method, properties, body):
ch.stop_consuming()
global answer
answer = body
- l'API ruby a une méthode pour vérifier la longueur de la file d'attente.. avez-vous vérifié le python docs?
Vous devez vous connecter pour publier un commentaire.
Ok, j'ai trouvé la solution suivante: