Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-9739

Consumer + auto-create receives from existing wildcard queue

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Undefined Undefined
    • None
    • None
    • None

      Issue

      In my setup where I have numerous consumers on explicitly defined queues (e.g. `queue.eventA.send, `queue.eventB.send`). These queues are auto-created and also have auto-delete turned on. Recently I added a wildcard consumer on `queue.*.send`, and noticed that after restarts of part of my applications, I occasionally get a consumer that should be consuming on the specific queues

      (e.g. `queue.eventA.send`) suddenly starts consuming from `queue.*.send` instead, giving that queue 2 consumers instead of the expected 1. 

      Reproduction
      I'm able to consistently reproduce the issue, but it's difficult to share as it relies on some Docker containers with my applications. High-over, it should be easily reproducible in a testcase as well:

      1. Start a clean environment that initializes the following consumers (in any order):
        1. queue.eventA.send
        2. queue.eventB.send
        3. queue.*.send
      2. Stop the consumers on `queue.eventA.send` and `queue.eventB.send`.
      3. Wait until the queues are auto-removed as the queues now have 0 consumers (and 0 messages) (i.e. AMQ224112 logging appears)
      4. Start the consumers again
        1. The queues won't be auto-created now
        2. The consumers will start consuming from the `queue.*.send` queue -> its consumer count will raise from 1 to 3

      If you were to do the same but the 'eventB' queue is not auto-deleted, that consumer will work just fine. 

       

      To me, it feels like some internal divert remains when the queue is auto-deleted, causing it to not be created again and therefore messing up how my messages are consumed. Is this expected behavior? 

       

      My (relevant) address settings are:

      • Address full policy = Page
      • Auto create addresses / queues = true
      • Auto delete addresses / queus = true -> when I switch this to false I can prevent the issue from occuring
      • Auto create dead letter & expiry resources = false
      • Routing type: Anycast
      • Address pattern: queue.#

       

      I tested on the 2 artemis versions mentioned. 

              rhn-support-jbertram Justin Bertram
              rh-messaging-ci Messaging CI
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: