diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-06-02 01:31:50 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-06-02 01:31:50 +0000 |
| commit | 58899e7c6e228192388159dd8ebb9809acadf128 (patch) | |
| tree | 10308dda48ff1df15a22e377df976213507526d2 /qpid/java | |
| parent | d9e7adfc3bc7dd35ff162456e265e8626e0be252 (diff) | |
| download | qpid-python-58899e7c6e228192388159dd8ebb9809acadf128.tar.gz | |
QPID-4899 : [Java Broker] Allow setting queue binding arguments in XML config file
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1488638 13f79535-47bb-0310-9956-ffa450edef68
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() |
