You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/02/04 06:54:35 UTC
[dubbo-spi-extensions] 09/44: fix service discovery impls
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 2.7.x
in repository https://gitbox.apache.org/repos/asf/dubbo-spi-extensions.git
commit 7f404f6c647b3a1249f5b982123ec4787d109298
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Aug 27 16:27:15 2020 +0800
fix service discovery impls
---
.../dubbo/registry/consul/ConsulServiceDiscovery.java | 19 +++++++++++--------
.../dubbo/registry/etcd/EtcdServiceDiscovery.java | 7 +++++--
.../dubbo/registry/eureka/EurekaServiceDiscovery.java | 5 ++++-
3 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java b/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java
index 5d5e98b..f1d3d3b 100644
--- a/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java
+++ b/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.NamedThreadFactory;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.event.EventListener;
+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
import org.apache.dubbo.registry.client.DefaultServiceInstance;
import org.apache.dubbo.registry.client.ServiceDiscovery;
import org.apache.dubbo.registry.client.ServiceInstance;
@@ -65,7 +66,7 @@ import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.WATCH_TIME
/**
* 2019-07-31
*/
-public class ConsulServiceDiscovery implements ServiceDiscovery, EventListener<ServiceInstancesChangedEvent> {
+public class ConsulServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {
private static final Logger logger = LoggerFactory.getLogger(ConsulServiceDiscovery.class);
@@ -120,6 +121,7 @@ public class ConsulServiceDiscovery implements ServiceDiscovery, EventListener<S
@Override
public void register(ServiceInstance serviceInstance) throws RuntimeException {
+ super.register(serviceInstance);
NewService consulService = buildService(serviceInstance);
ttlScheduler.add(consulService.getId());
client.agentServiceRegister(consulService);
@@ -127,17 +129,18 @@ public class ConsulServiceDiscovery implements ServiceDiscovery, EventListener<S
@Override
public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {
- if (notifier == null) {
- String serviceName = listener.getServiceName();
- Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());
- Long consulIndex = response.getConsulIndex();
- notifier = new ConsulNotifier(serviceName, consulIndex);
- }
- notifierExecutor.execute(notifier);
+// if (notifier == null) {
+// String serviceName = listener.getServiceNames();
+// Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());
+// Long consulIndex = response.getConsulIndex();
+// notifier = new ConsulNotifier(serviceName, consulIndex);
+// }
+// notifierExecutor.execute(notifier);
}
@Override
public void update(ServiceInstance serviceInstance) throws RuntimeException {
+ super.register(serviceInstance);
// TODO
// client.catalogRegister(buildCatalogService(serviceInstance));
}
diff --git a/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java b/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
index a26ebc6..0f41de3 100644
--- a/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
+++ b/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
@@ -24,6 +24,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.ConcurrentHashSet;
import org.apache.dubbo.event.EventDispatcher;
import org.apache.dubbo.event.EventListener;
+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
import org.apache.dubbo.registry.client.DefaultServiceInstance;
import org.apache.dubbo.registry.client.ServiceDiscovery;
import org.apache.dubbo.registry.client.ServiceInstance;
@@ -50,7 +51,7 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* 2019-07-08
*/
-public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<ServiceInstancesChangedEvent> {
+public class EtcdServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {
private final static Logger logger = LoggerFactory.getLogger(EtcdServiceDiscovery.class);
@@ -102,6 +103,7 @@ public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<Ser
@Override
public void register(ServiceInstance serviceInstance) throws RuntimeException {
+ super.register(serviceInstance);
try {
this.serviceInstance = serviceInstance;
String path = toPath(serviceInstance);
@@ -127,6 +129,7 @@ public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<Ser
@Override
public void update(ServiceInstance serviceInstance) throws RuntimeException {
+ super.register(serviceInstance);
try {
String path = toPath(serviceInstance);
etcdClient.putEphemeral(path, new Gson().toJson(serviceInstance));
@@ -158,7 +161,7 @@ public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<Ser
@Override
public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {
- registerServiceWatcher(listener.getServiceName());
+ listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName));
}
@Override
diff --git a/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java b/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java
index bb49c10..3aebd7a 100644
--- a/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java
+++ b/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.registry.eureka;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.event.EventDispatcher;
+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
import org.apache.dubbo.registry.client.DefaultServiceInstance;
import org.apache.dubbo.registry.client.ServiceDiscovery;
import org.apache.dubbo.registry.client.ServiceInstance;
@@ -53,7 +54,7 @@ import static org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.parseSer
/**
* Eureka {@link ServiceDiscovery} implementation based on Eureka API
*/
-public class EurekaServiceDiscovery implements ServiceDiscovery {
+public class EurekaServiceDiscovery extends AbstractServiceDiscovery {
private final EventDispatcher eventDispatcher = getDefaultExtension();
@@ -205,6 +206,7 @@ public class EurekaServiceDiscovery implements ServiceDiscovery {
@Override
public void register(ServiceInstance serviceInstance) throws RuntimeException {
+ super.register(serviceInstance);
initEurekaClient(serviceInstance);
setInstanceStatus(InstanceInfo.InstanceStatus.UP);
}
@@ -217,6 +219,7 @@ public class EurekaServiceDiscovery implements ServiceDiscovery {
@Override
public void update(ServiceInstance serviceInstance) throws RuntimeException {
+ super.update(serviceInstance);
setInstanceStatus(serviceInstance.isHealthy() ? InstanceInfo.InstanceStatus.UP :
InstanceInfo.InstanceStatus.UNKNOWN);
}