[
https://issues.apache.org/jira/browse/ARTEMIS-2100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16664884#comment-16664884
]
ASF GitHub Bot commented on ARTEMIS-2100:
-----------------------------------------
Github user grs commented on the issue:
https://github.com/apache/activemq-artemis/pull/2392
I am talking only about the AMQP support. It is inconsistent. It does not
as you say 'honour the sender'. It effectively forces the behaviour of anycast
on all subsequent clients, unless every sender explicitly requests multicast.
Dynamic creation of an address should only apply if the address does not exist,
hence the word 'create'. Current behaviour is wrong and not what is documented.
And I have never said an address cannot be both anycast and multicast,
though the documentation explicitly describes this as an antipattern. For AMQP
however the current behaviour means it cannot be both. Once a multicast address
is recreated by the broker with anycast added, its use for multicast receivers
is broken, though receivers connected before that change will continue to
receive in multicast which does not honour the senders wishes. Nor is the
senders wish honoured if it chooses multicast after that.
> address routing-type overridden on attaching AMQP sender
> --------------------------------------------------------
>
> Key: ARTEMIS-2100
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2100
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Affects Versions: 2.6.2
> Reporter: Gordon Sim
> Priority: Major
> Fix For: 2.6.4
>
>
> If the default-address-routing-type is set to ANYCAST and an address is
> created with routing-type MULTICAST, then when an AMQP sender attaches to
> that address the address is recreated with routing-type=[MULTICAST,ANYCAST]
> and a queue with the same name as the address is created. It is expected that
> the address routing-type should be honoured.
> E.g. on broker with:
> {noformat}
> <address-setting match="#">
> <dead-letter-address>DLQ</dead-letter-address>
> <expiry-address>ExpiryQueue</expiry-address>
> <redelivery-delay>0</redelivery-delay>
> <!-- with -1 only the global-max-size is in use for limiting -->
> <max-size-bytes>-1</max-size-bytes>
>
> <message-counter-history-day-limit>10</message-counter-history-day-limit>
> <address-full-policy>PAGE</address-full-policy>
> <auto-create-queues>true</auto-create-queues>
> <auto-create-addresses>true</auto-create-addresses>
> <auto-create-jms-queues>true</auto-create-jms-queues>
> <auto-create-jms-topics>true</auto-create-jms-topics>
>
> <default-address-routing-type>ANYCAST</default-address-routing-type>
> </address-setting>
> {noformat}
> Create a MULTICAST address:
> {noformat}
> artemis address create --multicast --no-anycast --name mytopic
> {noformat}
> Check the address and any queues (feilds ommitted for clarity):
> {noformat}
> $ artemis address show --name mytopic
> Address [name=mytopic, routingTypes={MULTICAST}, autoCreated=false]
> $ artemis queue stat
> |NAME |ADDRESS
> |DLQ |DLQ
> |ExpiryQueue |ExpiryQueue
> |activemq.management.612e33f1-1c5f-4bde-99bb-9e9188efa508|activemq.management.612e33f1-1c5f-4bde-99bb-9e9188efa508|1
>
> {noformat}
> Now attach an AMQP sender to the address, e.g. using Qpid Proton python
> example
> {noformat}
> simple_send.py -a localhost/mytopic -m 1
> {noformat}
> Now the address has been altered and a queue called mytopic exists:
> {noformat}
> $ artemis address show --name mytopic
> Address [name=mytopic, routingTypes={MULTICAST,ANYCAST}, autoCreated=false]
> $ artemis queue stat
> |NAME |ADDRESS
> |DLQ |DLQ
> |ExpiryQueue |ExpiryQueue
> |activemq.management.5a393c3e-746d-404b-9afb-36849886aaa5|activemq.management.5a393c3e-746d-404b-9afb-36849886aaa5
> |mytopic |mytopic
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)