diff options
| author | Aidan Skinner <aidan@apache.org> | 2009-04-03 16:36:14 +0000 |
|---|---|---|
| committer | Aidan Skinner <aidan@apache.org> | 2009-04-03 16:36:14 +0000 |
| commit | 9c80608ac4e50745f82c4ff75f325ff87bc6ceb9 (patch) | |
| tree | 91569689cae532eab896d09f242f6a0b483a171d /java/broker/src/main | |
| parent | 3ce1e054276ad8463a146627ea2749d80a941060 (diff) | |
| download | qpid-python-9c80608ac4e50745f82c4ff75f325ff87bc6ceb9.tar.gz | |
QPID-1730: make it easy to configure queues, fix inheriting settings from the virtualhost.
AMQQueue.configure: new method
AMQQueueFactory: use AMQQueue.configure, don't set things directly
SimpleAMQQueue.configure, MockAMQQueue.configure: implement new method from the interface
QueueConfiguration: use VirtualHostConfiguration for default values if they're unset
VirtualHostConfiguration: if a queue doesn't exist, give it a default configuration. Add methods to get default settings for configuration items
QueueConfigurationTest: test case, checks that inheritance and defaults work along with explicitly set values.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@761721 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker/src/main')
5 files changed, 62 insertions, 21 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java index e6c5dee90d..256d15e7db 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java @@ -21,30 +21,26 @@ package org.apache.qpid.server.configuration; import java.util.List; -import java.io.File; import org.apache.commons.configuration.Configuration; -import org.apache.qpid.server.registry.ApplicationRegistry; public class QueueConfiguration { - - // FIXME AIDAN XXX -- deal with defaults private Configuration _config; private String _name; - private VirtualHostConfiguration _virtualHostConfiguration; + private VirtualHostConfiguration _vHostConfig; public QueueConfiguration(String name, Configuration config, VirtualHostConfiguration virtualHostConfiguration) { - _virtualHostConfiguration = virtualHostConfiguration; + _vHostConfig = virtualHostConfiguration; _config = config; _name = name; } public VirtualHostConfiguration getVirtualHostConfiguration() { - return _virtualHostConfiguration; + return _vHostConfig; } public boolean getDurable() @@ -87,29 +83,29 @@ public class QueueConfiguration return _name; } - public long getMaximumMessageAge() + public int getMaximumMessageAge() { - return _config.getLong("maximumMessageAge", 0); + return _config.getInt("maximumMessageAge", _vHostConfig.getMaximumMessageAge()); } public long getMaximumQueueDepth() { - return _config.getLong("maximumQueueDepth", 0); + return _config.getLong("maximumQueueDepth", _vHostConfig.getMaximumQueueDepth()); } public long getMaximumMessageSize() { - return _config.getLong("maximumMessageSize", 0); + return _config.getLong("maximumMessageSize", _vHostConfig.getMaximumMessageSize()); } public long getMaximumMessageCount() { - return _config.getLong("maximumMessageCount", 0); + return _config.getLong("maximumMessageCount", _vHostConfig.getMaximumMessageCount()); } public long getMinimumAlertRepeatGap() { - return _config.getLong("minimumAlertRepeatGap", 0); + return _config.getLong("minimumAlertRepeatGap", _vHostConfig.getMinimumAlertRepeatGap()); } public long getMemoryUsageMaximum() diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java index 343abe4b5a..8d9f848b49 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java @@ -142,7 +142,16 @@ public class VirtualHostConfiguration public QueueConfiguration getQueueConfiguration(String queueName) { - return _queues.get(queueName); + // We might be asked for the config for a queue we don't know about, + // such as one that's been dynamically created. Those get the defaults by default. + if (_queues.containsKey(queueName)) + { + return _queues.get(queueName); + } + else + { + return new QueueConfiguration(queueName, new PropertiesConfiguration(), this); + } } public long getMemoryUsageMaximum() @@ -166,4 +175,29 @@ public class VirtualHostConfiguration return _config.getString(FLOW_TO_DISK_PATH, getServerConfiguration().getQpidWork()); } + public int getMaximumMessageAge() + { + return _config.getInt("queues.maximumMessageAge", 0); + } + + public Long getMaximumQueueDepth() + { + return _config.getLong("queues.maximumQueueDepth", 0); + } + + public Long getMaximumMessageSize() + { + return _config.getLong("queues.maximumMessageSize", 0); + } + + public Long getMaximumMessageCount() + { + return _config.getLong("queues.maximumMessageCount", 0); + } + + public Long getMinimumAlertRepeatGap() + { + return _config.getLong("queues.minimumAlertRepeatGap", 0); + } + } diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java index 43ec6c4d15..fae219e320 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java +++ b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java @@ -215,4 +215,6 @@ public interface AMQQueue extends Managable, Comparable<AMQQueue> { public void doTask(AMQQueue queue) throws AMQException; } + + void configure(QueueConfiguration config); } diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java index 6ba22321f1..b77a9d8f6a 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java +++ b/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java @@ -134,13 +134,7 @@ public class AMQQueueFactory } AMQQueue q = createAMQQueueImpl(queueName, durable, owner, autodelete, host, arguments); - q.setMaximumMessageAge(config.getMaximumMessageAge()); - q.setMaximumQueueDepth(config.getMaximumQueueDepth()); - q.setMaximumMessageSize(config.getMaximumMessageSize()); - q.setMaximumMessageCount(config.getMaximumMessageCount()); - q.setMinimumAlertRepeatGap(config.getMinimumAlertRepeatGap()); - q.setMemoryUsageMaximum(config.getMemoryUsageMaximum()); - q.setMemoryUsageMinimum(config.getMemoryUsageMinimum()); + q.configure(config); return q; } } diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java b/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java index e5898ceda9..6805d8261e 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java +++ b/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java @@ -19,6 +19,7 @@ import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.FieldTable; import org.apache.qpid.pool.ReadWriteRunnable; import org.apache.qpid.pool.ReferenceCountingExecutorService; +import org.apache.qpid.server.configuration.QueueConfiguration; import org.apache.qpid.server.exchange.Exchange; import org.apache.qpid.server.management.ManagedObject; import org.apache.qpid.server.output.ProtocolOutputConverter; @@ -1627,4 +1628,18 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener { return getType() + "[Owner:" + _owner + "][Durable:" + _durable + "]"; } + + public void configure(QueueConfiguration config) + { + if (config != null) + { + setMaximumMessageAge(config.getMaximumMessageAge()); + setMaximumQueueDepth(config.getMaximumQueueDepth()); + setMaximumMessageSize(config.getMaximumMessageSize()); + setMaximumMessageCount(config.getMaximumMessageCount()); + setMinimumAlertRepeatGap(config.getMinimumAlertRepeatGap()); + setMemoryUsageMaximum(config.getMemoryUsageMaximum()); + setMemoryUsageMinimum(config.getMemoryUsageMinimum()); + } + } } |
