Browse Source

Support route options on missing queue creation

Adds an ability to take exchange and routing_key parameters from
the current route when creating a missing queue.

This is useful when using custom routing class (specified by
CELERY_ROUTES) which decides a destination at runtime.

Closes #577
Akira Matsuzaki 13 years ago
parent
commit
e197b6031b
1 changed files with 5 additions and 1 deletions
  1. 5 1
      celery/routes.py

+ 5 - 1
celery/routes.py

@@ -67,7 +67,11 @@ class Router(object):
                 if not self.create_missing:
                     raise QueueNotFound(
                         "Queue %r is not defined in CELERY_QUEUES" % queue)
-                dest = dict(self.app.amqp.queues.add(queue, queue, queue))
+                if route.get("exchange") is None:
+                    route["exchange"] = queue
+                if route.get("routing_key") is None:
+                    route["routing_key"] = queue
+                dest = dict(self.app.amqp.queues.add(queue, **route))
             # needs to be declared by publisher
             dest["queue"] = queue
             # routing_key and binding_key are synonyms.