This is an automated email from the ASF dual-hosted git repository.

yaohaishi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 1e16ca4d5a151e126b6071dcdd1e8d75669573cd
Author: Liuhuaizhou <[email protected]>
AuthorDate: Tue Aug 20 14:45:45 2019 +0800

    [SCB-1450] Change Registry WebsocketClient work module  to a worker 
verticle,So it can support blocking-task,like Service Center watching task.
---
 .../client/http/AbstractClientPool.java            | 27 ++++++++++++++++++----
 .../client/http/HttpClientPool.java                |  5 ++++
 .../client/http/WebsocketClientPool.java           |  5 ++++
 3 files changed, 32 insertions(+), 5 deletions(-)

diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java
index a631b96..846fea8 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java
@@ -17,6 +17,9 @@
 
 package org.apache.servicecomb.serviceregistry.client.http;
 
+import com.netflix.config.DynamicIntProperty;
+import com.netflix.config.DynamicPropertyFactory;
+
 import org.apache.servicecomb.foundation.vertx.AddressResolverConfig;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.foundation.vertx.client.ClientPoolManager;
@@ -42,27 +45,41 @@ public abstract class AbstractClientPool implements 
ClientPool {
 
   public static final String PROXY_KEY = "sc.consumer";
 
+  private static final String EVENT_LOOP_POOL_SIZE = 
"servicecomb.service.registry.client.eventLoopPoolSize";
+
+  private static final String WORKER_POOL_SIZE = 
"servicecomb.service.registry.client.workerPoolSize";
+
+  private static final String WORKER_POOL_NAME = 
"registry-vert.x-worker-thread";
+
   private ClientPoolManager<HttpClientWithContext> clientMgr;
 
   public AbstractClientPool() {
     create();
   }
 
+  protected abstract boolean isWorker();
+
   public HttpClientWithContext getClient() {
     return this.clientMgr.findThreadBindClientPool();
   }
 
   public void create() {
+    DynamicIntProperty property = 
DynamicPropertyFactory.getInstance().getIntProperty(EVENT_LOOP_POOL_SIZE, 4);
+    DynamicIntProperty workerPoolSize = 
DynamicPropertyFactory.getInstance().getIntProperty(WORKER_POOL_SIZE, 4);
+
     // 这里面是同步接口,且好像直接在事件线程中用,保险起见,先使用独立的vertx实例
-    VertxOptions vertxOptions = new VertxOptions();
-    
vertxOptions.setAddressResolverOptions(AddressResolverConfig.getAddressResover(SSL_KEY));
+    VertxOptions vertxOptions = new VertxOptions()
+            
.setAddressResolverOptions(AddressResolverConfig.getAddressResover(SSL_KEY))
+            .setEventLoopPoolSize(property.get());
     Vertx vertx = VertxUtils.getOrCreateVertxByName("registry", vertxOptions);
     HttpClientOptions httpClientOptions = createHttpClientOptions();
     clientMgr = new ClientPoolManager<>(vertx, new 
HttpClientPoolFactory(httpClientOptions));
 
-    DeploymentOptions deployOptions =
-        VertxUtils.createClientDeployOptions(this.clientMgr,
-            ServiceRegistryConfig.INSTANCE.getWorkerPoolSize());
+    DeploymentOptions deployOptions = 
VertxUtils.createClientDeployOptions(this.clientMgr,
+            ServiceRegistryConfig.INSTANCE.getInstances())
+            .setWorker(isWorker())
+            .setWorkerPoolName(WORKER_POOL_NAME)
+            .setWorkerPoolSize(workerPoolSize.get());
     try {
       VertxUtils.blockDeploy(vertx, ClientVerticle.class, deployOptions);
     } catch (InterruptedException e) {
diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java
index efbee4c..71b400b 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java
@@ -40,6 +40,11 @@ public final class HttpClientPool extends AbstractClientPool 
{
   }
 
   @Override
+  protected boolean isWorker() {
+    return false;
+  }
+
+  @Override
   public HttpClientOptions createHttpClientOptions() {
     HttpVersion ver = ServiceRegistryConfig.INSTANCE.getHttpVersion();
     HttpClientOptions httpClientOptions = new HttpClientOptions();
diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java
index a8b14ab..3242043 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java
@@ -38,6 +38,11 @@ public final class WebsocketClientPool extends 
AbstractClientPool {
   }
 
   @Override
+  protected boolean isWorker() {
+    return true;
+  }
+
+  @Override
   public HttpClientOptions createHttpClientOptions() {
     HttpVersion ver = ServiceRegistryConfig.INSTANCE.getHttpVersion();
     HttpClientOptions httpClientOptions = new HttpClientOptions();

Reply via email to