Source code for sir.amqp.setup

#!/usr/bin/env python
# coding: utf-8
# Copyright (c) 2014 Wieland Hoffmann
# License: MIT, see LICENSE for details
import logging
import amqp

from sir import util
from functools import partial


logger = logging.getLogger("sir")


[docs]def setup_rabbitmq(args): """ Set up the AMQP server. :param args: will be ignored """ logger.info("Connecting to RabbitMQ") conn = util.create_amqp_connection() channel = amqp.Channel(conn) channel.open() logger.info("Declaring exchanes") edecl = partial(channel.exchange_declare, auto_delete=False, durable=True) edecl("search", "direct") edecl("search.retry", "fanout") edecl("search.failed", "fanout") logger.info("Declaring queues") qdecl = partial(channel.queue_declare, auto_delete=False, durable=True) delq, _, _ = qdecl("search.delete") indq, _, _ = qdecl("search.index") retrq, _, _ = qdecl("search.retry", arguments={ "x-message-ttl": 4 * 60 * 60 * 1000, "x-dead-letter-exchange": "search"} ) failq, _, _ = qdecl("search.failed") logger.info("Binding queues") channel.queue_bind(delq, "search", "delete") channel.queue_bind(indq, "search", "index") channel.queue_bind(indq, "search", "update") channel.queue_bind(retrq, "search.retry") channel.queue_bind(failq, "search.failed") logger.info("Done") conn.close()