Author: davsclaus
Date: Sun Aug 26 09:27:44 2012
New Revision: 1377395

URL: http://svn.apache.org/viewvc?rev=1377395&view=rev
Log:
CAMEL-5537: Added option orderedThreadPoolExecutor to mina2, so you can choose 
to use ordered/unordered. Ordered is now default as it ensures reliable 
communciation when using SSL etc.

Modified:
    
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java
    
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java
    
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java

Modified: 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java?rev=1377395&r1=1377394&r2=1377395&view=diff
==============================================================================
--- 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java
 (original)
+++ 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java
 Sun Aug 26 09:27:44 2012
@@ -52,6 +52,7 @@ public class Mina2Configuration implemen
     private SSLContextParameters sslContextParameters;
     private boolean autoStartTls = true;
     private int maximumPoolSize = 16; // 16 is the default mina setting
+    private boolean orderedThreadPoolExecutor = true;
 
     /**
      * Returns a copy of this configuration
@@ -254,4 +255,12 @@ public class Mina2Configuration implemen
     public void setMaximumPoolSize(int maximumPoolSize) {
         this.maximumPoolSize = maximumPoolSize;
     }
+
+    public boolean isOrderedThreadPoolExecutor() {
+        return orderedThreadPoolExecutor;
+    }
+
+    public void setOrderedThreadPoolExecutor(boolean 
orderedThreadPoolExecutor) {
+        this.orderedThreadPoolExecutor = orderedThreadPoolExecutor;
+    }
 }

Modified: 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java?rev=1377395&r1=1377394&r2=1377395&view=diff
==============================================================================
--- 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java
 (original)
+++ 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java
 Sun Aug 26 09:27:44 2012
@@ -40,6 +40,7 @@ import org.apache.mina.filter.codec.Prot
 import 
org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
 import org.apache.mina.filter.codec.textline.LineDelimiter;
 import org.apache.mina.filter.executor.ExecutorFilter;
+import org.apache.mina.filter.executor.OrderedThreadPoolExecutor;
 import org.apache.mina.filter.executor.UnorderedThreadPoolExecutor;
 import org.apache.mina.filter.logging.LoggingFilter;
 import org.apache.mina.filter.ssl.SslFilter;
@@ -144,8 +145,11 @@ public class Mina2Consumer extends Defau
         ((NioSocketAcceptor) acceptor).setReuseAddress(true);
         acceptor.setCloseOnDeactivation(true);
 
-        // using the unordered thread pool is fine as we dont need ordered 
invocation in our response handler
-        workerPool = new 
UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        if (configuration.isOrderedThreadPoolExecutor()) {
+            workerPool = new 
OrderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        } else {
+            workerPool = new 
UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        }
         acceptor.getFilterChain().addLast("threadPool", new 
ExecutorFilter(workerPool));
         if (minaLogger) {
             acceptor.getFilterChain().addLast("logger", new LoggingFilter());

Modified: 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java?rev=1377395&r1=1377394&r2=1377395&view=diff
==============================================================================
--- 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
 (original)
+++ 
camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
 Sun Aug 26 09:27:44 2012
@@ -46,6 +46,7 @@ import org.apache.mina.filter.codec.Prot
 import 
org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
 import org.apache.mina.filter.codec.textline.LineDelimiter;
 import org.apache.mina.filter.executor.ExecutorFilter;
+import org.apache.mina.filter.executor.OrderedThreadPoolExecutor;
 import org.apache.mina.filter.executor.UnorderedThreadPoolExecutor;
 import org.apache.mina.filter.logging.LoggingFilter;
 import org.apache.mina.filter.ssl.SslFilter;
@@ -298,8 +299,11 @@ public class Mina2Producer extends Defau
         // connector config
         connectorConfig = connector.getSessionConfig();
 
-        // using the unordered thread pool is fine as we dont need ordered 
invocation in our response handler
-        workerPool = new 
UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        if (configuration.isOrderedThreadPoolExecutor()) {
+            workerPool = new 
OrderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        } else {
+            workerPool = new 
UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        }
         connector.getFilterChain().addLast("threadPool", new 
ExecutorFilter(workerPool));
         if (minaLogger) {
             connector.getFilterChain().addLast("logger", new LoggingFilter());
@@ -357,8 +361,11 @@ public class Mina2Producer extends Defau
         final int processorCount = Runtime.getRuntime().availableProcessors() 
+ 1;
         connector = new NioDatagramConnector(processorCount);
 
-        // using the unordered thread pool is fine as we dont need ordered 
invocation in our response handler
-        workerPool = new 
UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        if (configuration.isOrderedThreadPoolExecutor()) {
+            workerPool = new 
OrderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        } else {
+            workerPool = new 
UnorderedThreadPoolExecutor(configuration.getMaximumPoolSize());
+        }
         connectorConfig = connector.getSessionConfig();
         connector.getFilterChain().addLast("threadPool", new 
ExecutorFilter(workerPool));
         if (minaLogger) {


Reply via email to