diff --git a/oslo/messaging/_drivers/impl_fake.py b/oslo/messaging/_drivers/impl_fake.py
index ca6eba927..9fc676259 100644
--- a/oslo/messaging/_drivers/impl_fake.py
+++ b/oslo/messaging/_drivers/impl_fake.py
@@ -45,6 +45,12 @@ class FakeListener(base.Listener):
         self._exchange_manager = exchange_manager
         self._targets = targets
 
+        # NOTE(sileht): Ensure that all needed queues exists even the listener
+        # have not been polled yet
+        for target in self._targets:
+            exchange = self._exchange_manager.get_exchange(target.exchange)
+            exchange.ensure_queue(target)
+
     def poll(self, timeout=None):
         if timeout is not None:
             deadline = time.time() + timeout
@@ -77,6 +83,13 @@ class FakeExchange(object):
         self._topic_queues = {}
         self._server_queues = {}
 
+    def ensure_queue(self, target):
+        with self._queues_lock:
+            if target.server:
+                self._get_server_queue(target.topic, target.server)
+            else:
+                self._get_topic_queue(target.topic)
+
     def _get_topic_queue(self, topic):
         return self._topic_queues.setdefault(topic, [])