diff options
Diffstat (limited to 'qpid/java')
2 files changed, 13 insertions, 5 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java index 7a54bdaa66..f37d06f117 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java @@ -23,6 +23,7 @@ package org.apache.qpid.server.configuration; import java.util.Collections; import java.util.Map; import org.apache.commons.configuration.CompositeConfiguration; +import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.qpid.exchange.ExchangeDefaults; @@ -201,4 +202,10 @@ public class QueueConfiguration extends AbstractConfiguration { return getMap("argument"); } + + public Map<String,String> getBindingArguments(String routingKey) + { + + return getConfig().containsKey(routingKey+".bindingArgument") ? getMap(routingKey+".bindingArgument") : null; + } } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index 32f7464b27..c63c32188d 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -390,25 +390,26 @@ public class VirtualHostImpl implements VirtualHost, IConnectionRegistry.Registr } else { - configureBinding(queue, exchange, routingKey); + + configureBinding(queue, exchange, routingKey, (Map) queueConfiguration.getBindingArguments(routingKey)); } } - if (!exchange.equals(defaultExchange)) + if (!exchange.equals(defaultExchange) && !routingKeys.contains(queueName)) { //bind the queue to the named exchange using its name - configureBinding(queue, exchange, queueName); + configureBinding(queue, exchange, queueName, null); } } - private void configureBinding(AMQQueue queue, Exchange exchange, String routingKey) throws AMQException + private void configureBinding(AMQQueue queue, Exchange exchange, String routingKey, Map<String,Object> arguments) throws AMQException { if (_logger.isInfoEnabled()) { _logger.info("Binding queue:" + queue + " with routing key '" + routingKey + "' to exchange:" + exchange.getName()); } - exchange.addBinding(routingKey, queue, null); + exchange.addBinding(routingKey, queue, arguments); } public String getName() |
