Me gustaría enviar un mensaje a un servidor RabbitMQ y luego esperar un mensaje de respuesta (en una cola de "respuesta a"). Por supuesto, no quiero esperar para siempre en caso de que la aplicación que está procesando estos mensajes no funcione, debe haber un tiempo de espera. Parece una tarea muy básica, pero no puedo encontrar la forma de hacerlo. Ahora me he encontrado con este problema tanto con py-amqplib como con RabbitMQ .NET client.Espere un solo mensaje RabbitMQ con un tiempo de espera
La mejor solución que tengo hasta ahora es para sondear utilizando basic_get
con sleep
en el medio, pero esto es bastante feo:
def _wait_for_message_with_timeout(channel, queue_name, timeout):
slept = 0
sleep_interval = 0.1
while slept < timeout:
reply = channel.basic_get(queue_name)
if reply is not None:
return reply
time.sleep(sleep_interval)
slept += sleep_interval
raise Exception('Timeout (%g seconds) expired while waiting for an MQ response.' % timeout)
seguramente hay alguna manera mejor?
Ahora esto es lo que llamo una "gran respuesta": "¡está arreglado!" Aceptar - con la esperanza de que * se * fusione en amqplib. – EMP
@EMP jaja :) divertido :) –