Browse Source

Use anon routing for autoqueues (skips routing table). Closes #2484

Issue celery/kombu#236
Ask Solem 9 years ago
parent
commit
37afd26c31
2 changed files with 7 additions and 6 deletions
  1. 7 4
      celery/app/amqp.py
  2. 0 2
      funtests/stress/stress/templates.py

+ 7 - 4
celery/app/amqp.py

@@ -488,8 +488,11 @@ class AMQP(object):
                 except AttributeError:
                     pass
                 delivery_mode = delivery_mode or default_delivery_mode
-            exchange = exchange or queue.exchange.name
-            routing_key = routing_key or queue.routing_key
+            if not exchange and not routing_key:
+                exchange, routing_key = '', qname
+            else:
+                exchange = exchange or queue.exchange.name or default_exchange
+                routing_key = routing_key or queue.routing_key or default_rkey
             if declare is None and queue and not isinstance(queue, Broadcast):
                 declare = [queue]
 
@@ -507,8 +510,8 @@ class AMQP(object):
                 )
             ret = producer.publish(
                 body,
-                exchange=exchange or default_exchange,
-                routing_key=routing_key or default_rkey,
+                exchange=exchange,
+                routing_key=routing_key,
                 serializer=serializer or default_serializer,
                 compression=compression or default_compressor,
                 retry=retry, retry_policy=_rp,

+ 0 - 2
funtests/stress/stress/templates.py

@@ -61,8 +61,6 @@ class default(object):
     task_default_queue = CSTRESS_QUEUE
     task_queues = [
         Queue(CSTRESS_QUEUE,
-              exchange=Exchange(CSTRESS_QUEUE),
-              routing_key=CSTRESS_QUEUE,
               durable=not CSTRESS_TRANS,
               no_ack=CSTRESS_TRANS),
     ]