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) {