You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/09/07 07:45:08 UTC
[3/3] camel git commit: CAMEL-10240: Fix for thread pool sizes in
CamelHttpClient
CAMEL-10240: Fix for thread pool sizes in CamelHttpClient
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/26041cad
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/26041cad
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/26041cad
Branch: refs/heads/master
Commit: 26041cad6709980386230b8042b5bad84f30031b
Parents: bfb971b
Author: Tomasz Kopczynski <to...@kopczynski.net.pl>
Authored: Mon Sep 5 20:55:04 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Sep 7 09:44:57 2016 +0200
----------------------------------------------------------------------
.../camel/component/jetty/CamelHttpClient.java | 9 ++++++---
.../component/jetty/JettyHttpComponent.java | 21 ++++++++++++++++++--
.../component/jetty9/CamelHttpClient9.java | 5 +++++
.../component/jetty9/JettyHttpComponent9.java | 5 +++--
4 files changed, 33 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/26041cad/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelHttpClient.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelHttpClient.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelHttpClient.java
index 1f4504c..ab5caac 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelHttpClient.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelHttpClient.java
@@ -22,6 +22,7 @@ import javax.net.ssl.SSLContext;
import org.apache.camel.util.ObjectHelper;
import org.eclipse.jetty.client.HttpClient;
+import org.eclipse.jetty.client.HttpClientTransport;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
@@ -33,6 +34,10 @@ public abstract class CamelHttpClient extends HttpClient {
super(sslContextFactory);
}
+ public CamelHttpClient(HttpClientTransport transport, SslContextFactory sslContextFactory) {
+ super(transport, sslContextFactory);
+ }
+
@Deprecated
/**
* It does nothing here, please setup SslContextFactory directly, it will be removed in Camel 2.16.0
@@ -45,10 +50,8 @@ public abstract class CamelHttpClient extends HttpClient {
@Override
protected void doStart() throws Exception {
if (!hasThreadPool()) {
- // if there is no thread pool then create a default thread pool using daemon threads
+ // if there is no thread pool then create a default thread pool using daemon threads with default size (200)
QueuedThreadPool qtp = new QueuedThreadPool();
- // 16 max threads is the default in the http client
- qtp.setMaxThreads(16);
qtp.setDaemon(true);
// let the thread names indicate they are from the client
qtp.setName("CamelJettyClient(" + ObjectHelper.getIdentityHashCode(this) + ")");
http://git-wip-us.apache.org/repos/asf/camel/blob/26041cad/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
index 70583c8..260e2bb 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
@@ -67,6 +67,8 @@ import org.apache.camel.util.URISupport;
import org.apache.camel.util.UnsafeUriCharactersEncoder;
import org.apache.camel.util.jsse.SSLContextParameters;
import org.eclipse.jetty.client.HttpClient;
+import org.eclipse.jetty.client.HttpClientTransport;
+import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.jmx.MBeanContainer;
import org.eclipse.jetty.server.AbstractConnector;
@@ -663,7 +665,8 @@ public abstract class JettyHttpComponent extends HttpCommonComponent implements
*/
public CamelHttpClient createHttpClient(JettyHttpEndpoint endpoint, Integer minThreads, Integer maxThreads, SSLContextParameters ssl) throws Exception {
SslContextFactory sslContextFactory = createSslContextFactory(ssl);
- CamelHttpClient httpClient = createCamelHttpClient(sslContextFactory);
+ HttpClientTransport transport = createHttpClientTransport(maxThreads);
+ CamelHttpClient httpClient = createCamelHttpClient(transport, sslContextFactory);
CamelContext context = endpoint.getCamelContext();
@@ -713,7 +716,21 @@ public abstract class JettyHttpComponent extends HttpCommonComponent implements
return httpClient;
}
- protected abstract CamelHttpClient createCamelHttpClient(SslContextFactory sslContextFactory);
+ private HttpClientTransport createHttpClientTransport(Integer maxThreads) {
+ if (maxThreads == null) {
+ return new HttpClientTransportOverHTTP();
+ }
+
+ int selectors = Runtime.getRuntime().availableProcessors() / 2;
+
+ if (selectors >= maxThreads) {
+ selectors = maxThreads - 1;
+ }
+
+ return new HttpClientTransportOverHTTP(selectors);
+ }
+
+ protected abstract CamelHttpClient createCamelHttpClient(HttpClientTransport transport, SslContextFactory sslContextFactory);
public Integer getHttpClientMinThreads() {
return httpClientMinThreads;
http://git-wip-us.apache.org/repos/asf/camel/blob/26041cad/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelHttpClient9.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelHttpClient9.java b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelHttpClient9.java
index 001662f..bb29eaf 100644
--- a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelHttpClient9.java
+++ b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelHttpClient9.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jetty9;
import java.util.concurrent.Executor;
import org.apache.camel.component.jetty.CamelHttpClient;
+import org.eclipse.jetty.client.HttpClientTransport;
import org.eclipse.jetty.util.ssl.SslContextFactory;
public class CamelHttpClient9 extends CamelHttpClient {
@@ -27,6 +28,10 @@ public class CamelHttpClient9 extends CamelHttpClient {
super(sslContextFactory);
}
+ public CamelHttpClient9(HttpClientTransport transport, SslContextFactory sslContextFactory) {
+ super(transport, sslContextFactory);
+ }
+
protected boolean hasThreadPool() {
return getExecutor() != null;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/26041cad/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java
index 0b2177f..995dc78 100644
--- a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java
+++ b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java
@@ -27,6 +27,7 @@ import org.apache.camel.component.jetty.JettyHttpComponent;
import org.apache.camel.component.jetty.JettyHttpEndpoint;
import org.apache.camel.util.IntrospectionSupport;
import org.apache.camel.util.ObjectHelper;
+import org.eclipse.jetty.client.HttpClientTransport;
import org.eclipse.jetty.server.AbstractConnector;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.Connector;
@@ -39,8 +40,8 @@ import org.eclipse.jetty.util.ssl.SslContextFactory;
public class JettyHttpComponent9 extends JettyHttpComponent {
- protected CamelHttpClient createCamelHttpClient(SslContextFactory sslContextFactory) {
- return new CamelHttpClient9(sslContextFactory);
+ protected CamelHttpClient createCamelHttpClient(HttpClientTransport transport, SslContextFactory sslContextFactory) {
+ return new CamelHttpClient9(transport, sslContextFactory);
}
protected JettyHttpEndpoint createEndpoint(URI endpointUri, URI httpUri) throws URISyntaxException {