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