[SCB-2315]transport event loop size configurable (#2496)
diff --git a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java
index a657a70..30e4b5b 100644
--- a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java
+++ b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java
@@ -44,12 +44,24 @@
public static void runTest() throws Exception {
CategorizedTestCaseRunner.runCategorizedTestCase("demo-multi-service-center-serverA");
testRegistryThreads();
+ testTransportThreads();
TestMgr.summary();
if (!TestMgr.errors().isEmpty()) {
throw new IllegalStateException("tests failed");
}
}
+ private static void testTransportThreads() throws Exception {
+ Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
+ List<String> expectedThread = new ArrayList<>();
+ threadSet.forEach(thread -> {
+ if (thread.getName().contains("transport-")) {
+ expectedThread.add(thread.getName());
+ }
+ });
+ TestMgr.check(6, expectedThread.size());
+ }
+
private static void testRegistryThreads() throws Exception {
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
List<String> expectedThread = new ArrayList<>();
diff --git a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/resources/application.yml b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/resources/application.yml
index 6fbd422..4999ed0 100644
--- a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/resources/application.yml
+++ b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/resources/application.yml
@@ -30,4 +30,8 @@
handler:
chain:
Consumer:
- default: loadbalance
\ No newline at end of file
+ default: loadbalance
+
+ transport:
+ eventloop:
+ size: 6
\ No newline at end of file
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/SharedVertxFactory.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/SharedVertxFactory.java
index 7d45890..5e35641 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/SharedVertxFactory.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/SharedVertxFactory.java
@@ -19,6 +19,8 @@
import org.apache.servicecomb.foundation.vertx.metrics.DefaultVertxMetricsFactory;
import org.apache.servicecomb.foundation.vertx.metrics.MetricsOptionsEx;
+import com.netflix.config.DynamicPropertyFactory;
+
import io.vertx.core.Vertx;
import io.vertx.core.VertxOptions;
import io.vertx.core.shareddata.Shareable;
@@ -33,6 +35,15 @@
public SharedVertxInfo() {
vertxOptions.setMetricsOptions(metricsOptionsEx);
+ vertxOptions.setEventLoopPoolSize(readEventLoopPoolSize("servicecomb.transport.eventloop.size"));
+ }
+
+ private static int readEventLoopPoolSize(String key) {
+ int count = DynamicPropertyFactory.getInstance().getIntProperty(key, -1).get();
+ if (count > 0) {
+ return count;
+ }
+ return VertxOptions.DEFAULT_EVENT_LOOP_POOL_SIZE;
}
}