Uploaded image for project: 'Qpid Proton'
  1. Qpid Proton
  2. PROTON-1466

Container.create_receiver() does not create all receivers with certain names

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • proton-c-0.17.0
    • proton-c-0.18.0
    • python-binding
    • None

    Description

      On an empty broker create three queues:

      qpid-config add queue resource_manager@dev.celery.pidbox
      qpid-config add queue resource_manager
      qpid-config add queue resource_manager@dev.dq
      

      Run the reproducer below `python three_consumers.py`

      three_consumers.py
      from __future__ import print_function
      
      from proton.handlers import MessagingHandler
      from proton.reactor import Container
      
      class ThreeConsumers(MessagingHandler):
          def __init__(self):
              super(ThreeConsumers, self).__init__()
      
          def on_start(self, event):
              self.conn = event.container.connect('localhost:5672')
              event.container.create_receiver(self.conn, 'resource_manager@dev.celery.pidbox')
              event.container.create_receiver(self.conn, 'resource_manager')
              event.container.create_receiver(self.conn, 'resource_manager@dev.dq')
      
          def on_message(self, event):
              print(event.message.body)
      
      try:
          Container(ThreeConsumers()).run()
      except KeyboardInterrupt:
          pass
      

      Show the queue stats with:

      qpid-stat -q

      Observe that each queue created should have a consumer but it does not. See the "cons" column.

      Queues
        queue                                     dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
        =========================================================================================================================
        51b5638e-cddc-4301-a0d8-73e44849cf01:0.0       Y        Y        0     0      0       0      0        0         1     2
        resource_manager                          Y                      0     2      2       0   2.25k    2.25k        1     2
        resource_manager@dev.celery.pidbox                               0     0      0       0      0        0         0     1
        resource_manager@dev.dq                                          0     0      0       0      0        0         1     1
      

      Note that reordering the create_receiver calls or commenting them out causes different consumer counts.

      Attachments

        Issue Links

          Activity

            People

              aconway Alan Conway
              bmbouter Brian Bouterse
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: