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