[
https://issues.apache.org/jira/browse/ARTEMIS-5337?focusedWorklogId=961347&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-961347
]
ASF GitHub Bot logged work on ARTEMIS-5337:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 12/Mar/25 03:49
Start Date: 12/Mar/25 03:49
Worklog Time Spent: 10m
Work Description: jbertram opened a new pull request, #5555:
URL: https://github.com/apache/activemq-artemis/pull/5555
Most protocols don't natively understand the address/queue model used by
Artemis. When those protocols want anycast semantics the standard behavior is
to create an address and a queue with the same name. However, sometimes a queue
already exists on the address with that particular name in which case the
broker will attach the consumer to that queue.
This is acceptable most of the time, but it is problematic when that queue
uses a wild-card. In this case the consumer will potentially receive messages
sent to other addresses (i.e. whatever the wild-card covers).
This commit fixes that by detecting the wild-card queue and ignoring it.
Instead the broker will create a new queue specifically for the incoming
consumer.
Issue Time Tracking
-------------------
Worklog Id: (was: 961347)
Remaining Estimate: 0h
Time Spent: 10m
> Consumer + auto-create receives from existing wildcard queue
> ------------------------------------------------------------
>
> Key: ARTEMIS-5337
> URL: https://issues.apache.org/jira/browse/ARTEMIS-5337
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: AMQP, Broker
> Affects Versions: 2.31.2, 2.38.0
> Reporter: Jelle Smits
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> *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:
> # Start a clean environment that initializes the following consumers (in any
> order):
> ## queue.eventA.send
> ## queue.eventB.send
> ## queue.*.send
> # Stop the consumers on `queue.eventA.send` and `queue.eventB.send`.
> # Wait until the queues are auto-removed as the queues now have 0 consumers
> (and 0 messages) (i.e. AMQ224112 logging appears)
> # Start the consumers again
> ## The queues won't be auto-created now
> ## 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.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact