我想发送消息到RabbitMQ服务器,然后等待回复消息(在“回复”队列中)。当然,我不想永远等待处理这些消息的应用程序停机 - 这需要超时。这听起来像是一项非常基本的任务,但我找不到办法做到这一点。我现在遇到了这个问题py-amqplib和RabbitMQ .NET client。等待一个超时的单个RabbitMQ消息
到目前为止,我已经得到了最好的解决方案是使用basic_get
在两者之间sleep
轮询,但是这是很丑陋:
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)
肯定有一些更好的办法?
现在,我称之为“伟大的答案”:“它是固定的”!接受 - 希望它*被合并到amqplib中。 – EMP 2010-05-10 23:08:27
@EMP哈哈:)有趣:) – 2013-07-18 10:51:04