From d63388431268eca10a314ddc655989fdb190bad6 Mon Sep 17 00:00:00 2001 From: Serg Melikyan Date: Fri, 22 Nov 2013 17:49:08 +0400 Subject: [PATCH] Added support for TTL & HA in declared queues Change-Id: Id60a7b3231394b146d4404356bf80035406bfcf4 --- muranocommon/messaging/mqclient.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/muranocommon/messaging/mqclient.py b/muranocommon/messaging/mqclient.py index 544361e..76f2ac4 100644 --- a/muranocommon/messaging/mqclient.py +++ b/muranocommon/messaging/mqclient.py @@ -59,8 +59,22 @@ class MqClient(object): self._client.wait(promise) self._connected = False - def declare(self, queue, exchange=None): - promise = self._client.queue_declare(str(queue), durable=True) + def declare(self, queue, exchange=None, enable_ha=False, ttl=0): + queue_args = {} + if enable_ha is True: + # To use mirrored queues feature in RabbitMQ 2.x + # we need to declare this policy on the queue itself. + # + # Warning: this option has no effect on RabbitMQ 3.X, + # to enable mirrored queues feature in RabbitMQ 3.X, please + # configure RabbitMQ. + queue_args['x-ha-policy'] = 'all' + if ttl > 0: + queue_args['x-expires'] = str(ttl) + + promise = self._client.queue_declare( + str(queue), durable=True, arguments=queue_args + ) self._client.wait(promise) if exchange: