diff options
Diffstat (limited to 'java')
4 files changed, 34 insertions, 5 deletions
diff --git a/java/broker/etc/virtualhosts.xml b/java/broker/etc/virtualhosts.xml index 4bc6956e5a..5860bfe2cb 100644 --- a/java/broker/etc/virtualhosts.xml +++ b/java/broker/etc/virtualhosts.xml @@ -30,6 +30,7 @@ </store> <housekeeping> + <threadCount>2</threadCount> <expiredMessageCheckPeriod>20000</expiredMessageCheckPeriod> </housekeeping> 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 4e29a3e526..780f5f1159 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 @@ -210,4 +210,9 @@ public class VirtualHostConfiguration extends ConfigurationPlugin "security", "store", "housekeeping"}; } + + public int getHouseKeepingThreadCount() + { + return _config.getInt("housekeeping.threadCount", Runtime.getRuntime().availableProcessors()); + } } diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index 4331bbf972..0252d265fd 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -332,7 +332,8 @@ public class VirtualHostImpl implements Accessable, VirtualHost if (plugins != null) { - ScheduledThreadPoolExecutor vhostTasks = new ScheduledThreadPoolExecutor(plugins.size()); + ScheduledThreadPoolExecutor vhostTasks + = new ScheduledThreadPoolExecutor(_configuration.getHouseKeepingThreadCount()); for (String pluginName : plugins.keySet()) { diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java index 6c9526346c..e30b5e1934 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java @@ -20,21 +20,43 @@ */ package org.apache.qpid.server.virtualhost.plugins; -public interface VirtualHostPlugin extends Runnable +import org.apache.log4j.Logger; + +public abstract class VirtualHostPlugin implements Runnable { - public void run(); + Logger _logger = Logger.getLogger(this.getClass()); + + final public void run() + { + try + { + execute(); + } + catch (Throwable e) + { + _logger.warn(this.getClass().getSimpleName()+" throw exception: " + e); + } + } + /** * Long value representing the delay between repeats * * @return */ - public long getDelay(); + public abstract long getDelay(); /** * Option to specify what the delay value represents * @see java.util.concurrent.TimeUnit for valid value. * @return */ - public String getTimeUnit(); + public abstract String getTimeUnit(); + + /** + * Execute the plugin. + */ + public abstract void execute(); + + } |
