summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmer Katz <omer.drow@gmail.com>2019-03-31 17:37:15 +0300
committerGitHub <noreply@github.com>2019-03-31 17:37:15 +0300
commit892f400355e2aae382691c0105cd29c398cc6250 (patch)
treee367201adee220de1cd5ce3ce371eefbf329042b
parentd9735dee838fa833563500db802b535cef9d0672 (diff)
downloadkombu-892f400355e2aae382691c0105cd29c398cc6250.tar.gz
Reintroduce unqiue broadcast queue name generation as optional. (#1033)
-rw-r--r--kombu/common.py17
-rw-r--r--t/unit/test_common.py26
2 files changed, 34 insertions, 9 deletions
diff --git a/kombu/common.py b/kombu/common.py
index f86e01a6..824d097a 100644
--- a/kombu/common.py
+++ b/kombu/common.py
@@ -79,15 +79,26 @@ class Broadcast(Queue):
queue (str): By default a unique id is used for the queue
name for every consumer. You can specify a custom
queue name here.
+ unique (bool): Always create a unique queue
+ even if a queue name is supplied.
**kwargs (Any): See :class:`~kombu.Queue` for a list
of additional keyword arguments supported.
"""
attrs = Queue.attrs + (('queue', None),)
- def __init__(self, name=None, queue=None, auto_delete=True,
- exchange=None, alias=None, **kwargs):
- queue = queue or 'bcast.{0}'.format(uuid())
+ def __init__(self,
+ name=None,
+ queue=None,
+ unique=False,
+ auto_delete=True,
+ exchange=None,
+ alias=None,
+ **kwargs):
+ if unique:
+ queue = '{0}.{1}'.format(queue or 'bcast', uuid())
+ else:
+ queue = queue or 'bcast.{0}'.format(uuid())
return super(Broadcast, self).__init__(
alias=alias or name,
queue=queue,
diff --git a/t/unit/test_common.py b/t/unit/test_common.py
index 2cbd3d1b..dd044415 100644
--- a/t/unit/test_common.py
+++ b/t/unit/test_common.py
@@ -72,12 +72,15 @@ class test_declaration_cached:
class test_Broadcast:
def test_arguments(self):
- q = Broadcast(name='test_Broadcast')
- assert q.name.startswith('bcast.')
- assert q.alias == 'test_Broadcast'
- assert q.auto_delete
- assert q.exchange.name == 'test_Broadcast'
- assert q.exchange.type == 'fanout'
+ with patch('kombu.common.uuid',
+ return_value='test') as uuid_mock:
+ q = Broadcast(name='test_Broadcast')
+ uuid_mock.assert_called_with()
+ assert q.name == 'bcast.test'
+ assert q.alias == 'test_Broadcast'
+ assert q.auto_delete
+ assert q.exchange.name == 'test_Broadcast'
+ assert q.exchange.type == 'fanout'
q = Broadcast('test_Broadcast', 'explicit_queue_name')
assert q.name == 'explicit_queue_name'
@@ -86,6 +89,17 @@ class test_Broadcast:
q2 = q(Mock())
assert q2.name == q.name
+ with patch('kombu.common.uuid',
+ return_value='test') as uuid_mock:
+ q = Broadcast('test_Broadcast',
+ 'explicit_queue_name',
+ unique=True)
+ uuid_mock.assert_called_with()
+ assert q.name == 'explicit_queue_name.test'
+
+ q2 = q(Mock())
+ assert q2.name.split('.')[0] == q.name.split('.')[0]
+
class test_maybe_declare: