Estoy ejecutando código en python para enviar y recibir desde la cola de RabbitMQ desde otra aplicación donde no puedo permitir el enhebrado. Esta es una pregunta muy nueva pero, ¿existe la posibilidad de simplemente verificar si hay un mensaje y si no hay ninguno, simplemente dejar de escuchar? ¿Cómo debería cambiar el ejemplo básico de "Hola mundo" para dicha tarea? Actualmente he logrado dejar de consumir si recibo un mensaje, pero si no hay mensajes, mi método receive() solo continúa esperando. ¿Cómo forzarlo a no esperar si no hay mensajes? ¿O tal vez esperar solo por una cantidad dada de tiempo?RabbitMQ consume un mensaje si existe y sale
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
la API de rubí tiene un método para comprobar la longitud de la cola .. ¿has comprobado la documentación de Python? –