[
https://issues.apache.org/jira/browse/ARTEMIS-2100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16664237#comment-16664237
]
ASF GitHub Bot commented on ARTEMIS-2100:
-----------------------------------------
Github user grs commented on the issue:
https://github.com/apache/activemq-artemis/pull/2392
@michaelandrepearce re: "if producer explicitly sets a routing type, it
must be honoured", I'm not sure what you mean there.
At least from AMQP, the routing types is a property of the address, not the
sender. That is it affects the behaviour of that address for all clients using
it.
Let's say I create an address with --no-anycast and --multicast, bind a
named durable subscription queue to it, create a receiver on that named
subscription queue, and two further receivers. If I know create a sender and
request the 'queue' capability' (or don't request any capability), the
definition of the address is changed and a queue with the same name as the
address is created. However the messages from that sender are still enqueued
onto each of the queues currently bound to the address (as well as the
automatically created queue with the same name as the address, which now
accumulates messages sent to that address not only by senders explicitly
requesting anycast behaviour, but also those from senders declaring multicast
behaviour). I.e. they are *not* actually being routed with anycast semantics.
If my receiver to the named subscription queue exists and reconnects, it now
gets an error from the broker 'Incorrect Routing Type for queue, expecting:
ANYCAST'
To me this seems pretty broken behaviour.
> 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)