|  | @@ -513,10 +513,12 @@ class AMQP(object):
 | 
											
												
													
														|  |                  except AttributeError:
 |  |                  except AttributeError:
 | 
											
												
													
														|  |                      exchange_type = 'direct'
 |  |                      exchange_type = 'direct'
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            if not exchange and not routing_key and exchange_type == 'direct':
 |  | 
 | 
											
												
													
														|  | -                exchange, routing_key = '', qname
 |  | 
 | 
											
												
													
														|  | -            else:
 |  | 
 | 
											
												
													
														|  | -                exchange = exchange or queue.exchange.name or default_exchange
 |  | 
 | 
											
												
													
														|  | 
 |  | +            # convert to anon-exchange, when exchange not set and direct ex.
 | 
											
												
													
														|  | 
 |  | +            if not exchange or not routing_key and exchange_type == 'direct':
 | 
											
												
													
														|  | 
 |  | +                    exchange, routing_key = '', qname
 | 
											
												
													
														|  | 
 |  | +            elif exchange is None:
 | 
											
												
													
														|  | 
 |  | +                # not topic exchange, and exchange not undefined
 | 
											
												
													
														|  | 
 |  | +                exchange = queue.exchange.name or default_exchange
 | 
											
												
													
														|  |                  routing_key = routing_key or queue.routing_key or default_rkey
 |  |                  routing_key = routing_key or queue.routing_key or default_rkey
 | 
											
												
													
														|  |              if declare is None and queue and not isinstance(queue, Broadcast):
 |  |              if declare is None and queue and not isinstance(queue, Broadcast):
 | 
											
												
													
														|  |                  declare = [queue]
 |  |                  declare = [queue]
 |