CAMEL-8526: Add more EIP as specialized mbeans
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bfeb81c8 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bfeb81c8 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bfeb81c8 Branch: refs/heads/master Commit: bfeb81c8c2b54911c101c6145a8a2267f50e4a7b Parents: 5122afb Author: Claus Ibsen <davscl...@apache.org> Authored: Fri Jul 24 18:27:32 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Jul 24 18:57:34 2015 +0200 ---------------------------------------------------------------------- .../management/mbean/ManagedThreadsMBean.java | 30 +++++++ .../camel/management/mbean/ManagedThreads.java | 95 ++++++++++++++++++++ .../camel/processor/ThreadsProcessor.java | 4 + 3 files changed, 129 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/bfeb81c8/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java index fe0c48b..0b0ca4a 100644 --- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java @@ -26,4 +26,34 @@ public interface ManagedThreadsMBean extends ManagedProcessorMBean { @ManagedAttribute(description = "How to handle tasks which cannot be accepted by the thread pool") String getRejectedPolicy(); + @ManagedAttribute(description = "Core pool size") + int getCorePoolSize(); + + @ManagedAttribute(description = "Pool size") + int getPoolSize(); + + @ManagedAttribute(description = "Maximum pool size") + int getMaximumPoolSize(); + + @ManagedAttribute(description = "Largest pool size") + int getLargestPoolSize(); + + @ManagedAttribute(description = "Active count") + int getActiveCount(); + + @ManagedAttribute(description = "Task count") + long getTaskCount(); + + @ManagedAttribute(description = "Completed task count") + long getCompletedTaskCount(); + + @ManagedAttribute(description = "Task queue size") + long getTaskQueueSize(); + + @ManagedAttribute(description = "Keep alive time in seconds") + long getKeepAliveTime(); + + @ManagedAttribute(description = "Whether core threads is allowed to timeout if no tasks in queue to process") + boolean isAllowCoreThreadTimeout(); + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/bfeb81c8/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java index 31c487e..408dbcb 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedThreads.java @@ -16,6 +16,10 @@ */ package org.apache.camel.management.mbean; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + import org.apache.camel.CamelContext; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.api.management.mbean.ManagedThreadsMBean; @@ -48,4 +52,95 @@ public class ManagedThreads extends ManagedProcessor implements ManagedThreadsMB } } + @Override + public int getCorePoolSize() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getCorePoolSize(); + } else { + return 0; + } + } + + @Override + public int getPoolSize() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getPoolSize(); + } else { + return 0; + } + } + + @Override + public int getMaximumPoolSize() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getMaximumPoolSize(); + } else { + return 0; + } + } + + @Override + public int getLargestPoolSize() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getLargestPoolSize(); + } else { + return 0; + } + } + + @Override + public int getActiveCount() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getActiveCount(); + } else { + return 0; + } + } + + @Override + public long getTaskCount() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getTaskCount(); + } else { + return 0; + } + } + + @Override + public long getCompletedTaskCount() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getCompletedTaskCount(); + } else { + return 0; + } + } + + @Override + public long getTaskQueueSize() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + BlockingQueue queue = ((ThreadPoolExecutor) processor.getExecutorService()).getQueue(); + return queue != null ? queue.size() : 0; + } else { + return 0; + } + } + + @Override + public long getKeepAliveTime() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).getKeepAliveTime(TimeUnit.SECONDS); + } else { + return 0; + } + } + + @Override + public boolean isAllowCoreThreadTimeout() { + if (processor.getExecutorService() instanceof ThreadPoolExecutor) { + return ((ThreadPoolExecutor) processor.getExecutorService()).allowsCoreThreadTimeOut(); + } else { + return false; + } + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/bfeb81c8/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java index 3b7073c..93472b3 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/processor/ThreadsProcessor.java @@ -172,6 +172,10 @@ public class ThreadsProcessor extends ServiceSupport implements AsyncProcessor, this.rejectedPolicy = rejectedPolicy; } + public ExecutorService getExecutorService() { + return executorService; + } + public String toString() { return "Threads"; }