我想發送消息到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