From 8f008191ad47cbe06e0ba2739036adcc45fc38dd Mon Sep 17 00:00:00 2001 From: yuhuangbin Date: Thu, 19 Nov 2020 17:12:40 +0800 Subject: [PATCH] Optimize the way to get NacosWatch ThreadPoolTaskScheduler --- .../NacosDiscoveryClientConfiguration.java | 4 ++-- .../alibaba/cloud/nacos/discovery/NacosWatch.java | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java index b1021eef..d2f2f8ba 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java @@ -32,7 +32,7 @@ import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; /** * @author xiaojing @@ -59,7 +59,7 @@ public class NacosDiscoveryClientConfiguration { matchIfMissing = true) public NacosWatch nacosWatch(NacosServiceManager nacosServiceManager, NacosDiscoveryProperties nacosDiscoveryProperties, - ObjectProvider taskExecutorObjectProvider) { + ObjectProvider taskExecutorObjectProvider) { return new NacosWatch(nacosServiceManager, nacosDiscoveryProperties, taskExecutorObjectProvider); } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java index 4a78238f..bcb59035 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java @@ -27,7 +27,6 @@ import java.util.concurrent.atomic.AtomicLong; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.nacos.NacosServiceManager; -import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.naming.NamingService; import com.alibaba.nacos.api.naming.listener.Event; import com.alibaba.nacos.api.naming.listener.EventListener; @@ -41,7 +40,6 @@ import org.springframework.cloud.client.discovery.event.HeartbeatEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.context.SmartLifecycle; -import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; /** @@ -66,14 +64,15 @@ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycl private final NacosDiscoveryProperties properties; - private final TaskScheduler taskScheduler; + private final ThreadPoolTaskScheduler taskScheduler; public NacosWatch(NacosServiceManager nacosServiceManager, NacosDiscoveryProperties properties, - ObjectProvider taskScheduler) { + ObjectProvider taskScheduler) { this.nacosServiceManager = nacosServiceManager; this.properties = properties; - this.taskScheduler = taskScheduler.getIfAvailable(NacosWatch::getTaskScheduler); + this.taskScheduler = taskScheduler.stream().findAny() + .orElseGet(NacosWatch::getTaskScheduler); } private static ThreadPoolTaskScheduler getTaskScheduler() { @@ -156,7 +155,7 @@ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycl if (this.watchFuture != null) { // shutdown current user-thread, // then the other daemon-threads will terminate automatic. - ((ThreadPoolTaskScheduler) this.taskScheduler).shutdown(); + this.taskScheduler.shutdown(); this.watchFuture.cancel(true); } @@ -167,7 +166,7 @@ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycl namingService.unsubscribe(properties.getService(), properties.getGroup(), Arrays.asList(properties.getClusterName()), eventListener); } - catch (NacosException e) { + catch (Exception e) { log.error("namingService unsubscribe failed, properties:{}", properties, e); }