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";
     }

Reply via email to