Github user michaelandrepearce commented on the issue:
https://github.com/apache/activemq-artemis/pull/1316
After looking to revert this. I came back across another reason why we had
to do this.
There still is a fundamental problem with leaving :global in as it stands
(so this bit to make it meet spec i can't remove).
We should note, as per JMS
Spec:http://docs.oracle.com/javaee/7/api/javax/jms/Session.html#unsubscribe-java.lang.String-
"
A shared durable subscription and an unshared durable subscription may not
have the same name and client identifier (if set). If an unshared durable
subscription already exists with the same name and client identifier (if set)
then a JMSException is thrown.
"
This means the current behaviour in AMQP here is wrong, as shared and
unshared with the same subscription name are not making the same queue as such
above is invalid.
e.g. if clientId = myClient;
createSharedDurableConsumer(myTopic, "mySub")
will create myClient.mySub:global
createDurableConsumer(myTopic, "mySub")
will create myClient.mySub
Essentially this is why we need to remove the :global part still in the
shared part, otherwise this is breaking spec. The other option would be to add
:global (or a rename of :global to :durable) to the durable consumer, but that
would break things historically.
As removing :global in shared wouldn't break anything already historically,
as SharedDurable is not in a working state. this is why we do have to do this.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---