From bd2cd3f39468cae824d2b1a65e6882eae9f58cdd Mon Sep 17 00:00:00 2001 From: yuhuangbin Date: Wed, 9 Sep 2020 19:18:45 +0800 Subject: [PATCH] nacos watch enhance --- .../alibaba/cloud/nacos/discovery/NacosWatch.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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 460191138..d01089eb0 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 @@ -19,7 +19,7 @@ package com.alibaba.cloud.nacos.discovery; import java.util.Arrays; import java.util.List; import java.util.Map; -import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; @@ -41,6 +41,7 @@ import org.springframework.context.SmartLifecycle; /** * @author xiaojing + * @author yuhuangbin */ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycle { @@ -88,13 +89,13 @@ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycl if (event instanceof NamingEvent) { List instances = ((NamingEvent) event) .getInstances(); - Instance currentInstance = selectCurrentInstance( + Optional instanceOptional = selectCurrentInstance( instances); - if (Objects.nonNull(currentInstance)) { + instanceOptional.ifPresent(currentInstance -> { resetIfNeeded(currentInstance); publisher.publishEvent( new HeartbeatEvent(this, currentInstance)); - } + }); } } }); @@ -121,11 +122,11 @@ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycl } } - private Instance selectCurrentInstance(List instances) { + private Optional selectCurrentInstance(List instances) { return instances.stream() .filter(instance -> properties.getIp().equals(instance.getIp()) && properties.getPort() == instance.getPort()) - .findFirst().orElse(null); + .findFirst(); } @Override