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

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

Github user mtaylor commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/2392#discussion_r228899407
  
    --- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerReceiverContext.java
 ---
    @@ -229,7 +230,20 @@ private RoutingType getRoutingType(Symbol[] symbols, 
SimpleString address) {
                 }
              }
           }
    -
    +      //check any existing address routingTypes
    +      final AddressInfo addressInfo = sessionSPI.getAddress(address);
    +      if (addressInfo != null && !addressInfo.getRoutingTypes().isEmpty()) 
{
    +         if (addressInfo.getRoutingTypes().size() == 1) {
    +            return addressInfo.getRoutingType();
    +         }
    +         //try to pick the configured default routing type if between the 
already existing ones
    +         final RoutingType defaultRoutingType = 
sessionSPI.getDefaultRoutingType(address);
    +         if (defaultRoutingType != null && 
addressInfo.getRoutingTypes().contains(defaultRoutingType)) {
    +            return defaultRoutingType;
    +         }
    +         //prefer any existing routingType instead of the default one
    +         return addressInfo.getRoutingType();
    --- End diff --
    
    This doesn't work with auto-create enabled.  Also, the default routing type 
should never be null.  There is a default for the configuration setting.  
ActiveMQDefaultConfiguration.getDefaultRoutingType() = MULTICAST.
    
    You can remove everything below this line and just return the default.


> 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