【发布时间】:2011-02-17 11:43:56
【问题描述】:
我想向 RabbitMQ 服务器发送一条消息,然后等待回复消息(在“回复”队列中)。当然,我不想永远等待,以防处理这些消息的应用程序出现故障 - 需要超时。这听起来像是一项非常基本的任务,但我找不到这样做的方法。我现在在py-amqplib 和RabbitMQ .NET client 都遇到了这个问题。
到目前为止,我得到的最佳解决方案是使用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)
肯定有更好的方法吗?
【问题讨论】:
标签: .net python rabbitmq amqp py-amqplib