amqp queue_delete以异步方式捕获错误

时间:2011-03-14 18:23:55

标签: python rabbitmq amqp tornado

我刚刚开始使用pika(v 0.9.4)和Tornado(通过使用pika.adapters.tornado_connection.TornadoConnection),我想知道在使用时捕捉错误的恰当方法是什么,比如:{{1}当你想要删除的队列不存在时。 RabbitMQ引发了AMQPError,但我不确定如何以异步方式处理它。

任何人都对此有任何见解?

2 个答案:

答案 0 :(得分:0)

免责声明:我是stormed-amqp的作者

我建议尝试使用stormed-amqp

import logging
logging.basicConfig()

from tornado.ioloop import IOLoop
from stormed import Connection

def on_connect():
    ch = conn.channel()
    ch.queue_declare(queue='hello', durable=False)
    ch.queue_declare(queue='hello', durable=True)

def on_error(e):
    print "Got Connection error", e.reply_text, e.reply_code
    io_loop.stop()

conn = Connection(host='localhost')
conn.on_error = on_error
conn.connect(on_connect)
io_loop = IOLoop.instance()
io_loop.start()

答案 1 :(得分:0)

尽量避免错误。如果声明与队列的连接,并且该队列不存在,则会创建该队列。然后立即删除它。

或者,如果您将在下周左右再次使用该队列,即它不是单一用途,那么只需将其留下并将其作为清理长期空闲队列的系统管理员活动处理。

或者只是使用自动删除属性声明您的队列,当您断开连接时它们就会消失。