开发者

amqp queue_delete catch errors in async way

I've just got started using pika(v 0.9.4) with Tornado (through the use of pika.adapters.tornado_connection.TornadoConnection) and I was wondering what's the appropriate way of catching errors when using, say: queue_delete for when the queue you're trying to delete doesn't exist. RabbitMQ raises AMQPError, but I am not sure how this can be handled in an async way.

Anyone has any insights 开发者_JS百科on this ?


Disclaimer: I'm the author of stormed-amqp

I would suggest trying with 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()


Try to avoid the error. If you declare a connection to the queue, and it doesn't exist, it will be created. Then immediately delete it.

Or, if you will use that queue again in the next week or so, i.e. it is not single-use, then just leave it around and handle deletion as a system admin activity that cleans up long term idle queues.

Or just declare your queues with the auto-delete attribute and they will go away when you disconnect.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜