[
https://issues.apache.org/jira/browse/ARTEMIS-1210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16040694#comment-16040694
]
Robbie Gemmell commented on ARTEMIS-1210:
-----------------------------------------
For the JMS semantics the address name should not be part of the subscription
backing queue name.
The JMS subscription name usage basically falls into various name spaces
depending on whether they are durable or not and whether there is a ClientID
set or not. Within each of those spaces, it is up to you to ensure you use
unique enough names to satisfy your needs and the many JMS restrictions on
subscriptions.
- Shared and non-shared, durable, with ClientID (per-ClientID namespace)
- Shared, non-durable, with ClientID (per-ClientID namespace)
- Shared, durable, no ClientID (global namespace)
- Shared, non-durable, no ClientID (global namespace)
So if you have a ClientID, you have the entire namespaces for that connection
and must coordinate sub names within the use of that connection. If you dont
have a ClientID, you are in the same namespace as all other connections without
a ClientID and must coordinate sub names across all of them.
(As an aside, I'd say a provider allowing sub names to be used concurrently on
different topics, either on the same connection with a ClientID or across many
without, wouldn't just be 'over and above' JMS spec but rather directly
contravening several bits of it that say you cant)
> Queue name should create Queue with Address in its name by default
> ------------------------------------------------------------------
>
> Key: ARTEMIS-1210
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1210
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Reporter: Michael Andre Pearce
>
> When making a consumer for a topic (multicast) address, a queue is created
> named with for shared subscriber just the subscription name and if present
> client id only or in case of durable consumer it is the clientid + name only.
> This causes issue where client can validly use the same name's but for
> different address's.
> e.g.
> 2017-06-07 01:33:21.144 WARN 70432 --- [nerContainer-28]
> o.s.j.l.DefaultMessageListenerContainer : Setup of JMS message listener
> invoker failed for destination 'com.ig.trading.v0.order.history' - trying to
> recover. Cause: AMQ119082: Queue opstest already exists on another
> subscription
> To avoid this clash including the address in the queue name (as like for any
> cast queues) would solve this issue.
> Also it seems
> https://activemq.apache.org/artemis/docs/2.1.0/address-model.html alludes
> that actually this is the behaviour to include the address name in the
> consumer queue name.
> A clunky work around is obviously for the clients to ensure the name is
> globally unique by manually postfix'ing or prefix'ing the topic/address name.
> Though if this is the way forward the documents for address-model need to be
> updated with this detail, and avoid alluding to the pattern that the address
> is added by the system. Likewise frameworks like Spring would make a work
> around approach very fragile.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)