From 3a5de89dd686dbd9660f140fdddd9c78b20e1632 Mon Sep 17 00:00:00 2001
From: Oleg Bondarev <obondarev@mirantis.com>
Date: Mon, 27 Aug 2018 12:18:58 +0400
Subject: [PATCH] Use default exchange for direct messaging

Lots of exchanges create problems during failover under high
load. Please see bug report for details.

This is step 1 in the process: only using default exchange
when publishing. Consumers will still consume on separate
exchanges (and on default exchange by default) so this
should be (and tested to be) a non-breaking and
upgrade-friendly change.

Step 2 is to update consumers to only listen on default exchange,
to happen in T release.

Change-Id: Id3603f4b7e1274b616d76e1c0c009d2ab7f6efb6
Closes-Bug: #1789177
---
 oslo_messaging/_drivers/impl_rabbit.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/oslo_messaging/_drivers/impl_rabbit.py b/oslo_messaging/_drivers/impl_rabbit.py
index d21f46ebd..067d1673b 100644
--- a/oslo_messaging/_drivers/impl_rabbit.py
+++ b/oslo_messaging/_drivers/impl_rabbit.py
@@ -1015,6 +1015,7 @@ class Connection(object):
         responses for call/multicall
         """
 
+        # TODO(obondarev): use default exchange since T release
         consumer = Consumer(exchange_name=topic,
                             queue_name=topic,
                             routing_key=topic,
@@ -1181,7 +1182,7 @@ class Connection(object):
 
     def direct_send(self, msg_id, msg):
         """Send a 'direct' message."""
-        exchange = kombu.entity.Exchange(name=msg_id,
+        exchange = kombu.entity.Exchange(name='',  # using default exchange
                                          type='direct',
                                          durable=False,
                                          auto_delete=True,