我希望能夠檢測在向AMQP提交消息時交換是否不存在。如何檢測交換不存在與py-amqp
考慮下面的例子。
#!/usr/bin/python
import amqp
from time import sleep
conn = amqp.Connection(host="localhost:5672", userid="guest", password="guest", virtual_host="/")
outgoing = conn.channel()
message = amqp.Message("x")
while True:
print "publish message."
outgoing.basic_publish(message,exchange="non-existing",routing_key="fubar")
sleep(1)
該腳本不斷向發佈者發佈,但如果交換不存在,則不會引發任何錯誤。交換存在時,消息到達。
#!/usr/bin/python
import amqp
from time import sleep
conn = amqp.Connection(host="localhost:5672", userid="guest", password="guest", virtual_host="/")
outgoing = conn.channel()
message = amqp.Message("x")
while True:
print "publish message."
outgoing.basic_publish(message,exchange="non-existing",routing_key="fubar")
outgoing.wait()
sleep(1)
當我添加outgoing.wait()一個amqp.exceptions.NotFound引發這就是我想要的。但問題是,如果在這種情況下交換存在,消息到達,但outgoing.wait()阻止我的循環。 (我可以在單獨的線程中運行outgoing.wait(),但我不想這樣做。)
如何處理此問題?
任何意見建議歡迎指針
感謝,
周杰倫