diff --git a/oslo/messaging/_drivers/impl_qpid.py b/oslo/messaging/_drivers/impl_qpid.py
index f79fae6a7..623ede988 100644
--- a/oslo/messaging/_drivers/impl_qpid.py
+++ b/oslo/messaging/_drivers/impl_qpid.py
@@ -69,6 +69,9 @@ qpid_opts = [
     cfg.BoolOpt('qpid_tcp_nodelay',
                 default=True,
                 help='Whether to disable the Nagle algorithm.'),
+    cfg.IntOpt('qpid_receiver_capacity',
+               default=1,
+               help='The number of prefetched messages held by receiver.'),
     # NOTE(russellb) If any additional versions are added (beyond 1 and 2),
     # this file could probably use some additional refactoring so that the
     # differences between each version are split into different classes.
@@ -125,6 +128,7 @@ class ConsumerBase(object):
         """
         self.callback = callback
         self.receiver = None
+        self.rcv_capacity = conf.qpid_receiver_capacity
         self.session = None
 
         if conf.qpid_topology_version == 1:
@@ -178,7 +182,7 @@ class ConsumerBase(object):
     def _declare_receiver(self, session):
         self.session = session
         self.receiver = session.receiver(self.address)
-        self.receiver.capacity = 1
+        self.receiver.capacity = self.rcv_capacity
 
     def _unpack_json_msg(self, msg):
         """Load the JSON data in msg if msg.content_type indicates that it