[ 
https://issues.apache.org/jira/browse/ARTEMIS-2100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16665117#comment-16665117
 ] 

ASF GitHub Bot commented on ARTEMIS-2100:
-----------------------------------------

Github user grs commented on the issue:

    https://github.com/apache/activemq-artemis/pull/2392
  
    If the queue and topic with the same name/address were independent, then 
clients explicitly selecting one or the other would not see each others 
messages. Messages from a sender with capability 'queue' would not be seen by 
subscribers with capability 'topic'. That is not how it behaves though. 
Messages from all senders go to all bound queues.
    
    Two further separate points:
    
    (1) If the address already exists with multicast, and an amqp receiver 
attaches with capability 'queue' (i.e. anycast), the address is not modified 
and the queue is not created. The receiver is detached with an error that queue 
support is not configured. (To me that is sensible behaviour). However a sender 
requesting the same thing results in the address being changed and a queue 
being created. That seems inconsistent at best.
    
    (2) Once a sender has forced a pre-defined address to support anycast, a 
receiver using a fully qualified queue name - myaddress::mysubscription - will 
get an error unless they request 'topic' capability though surely this form of 
address is entirely clear on what is required.


> 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)

Reply via email to