diff --git a/pom.xml b/pom.xml
index fe54244..f9e1ed5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,8 +14,8 @@
2.7.18
-
- 2021.0.5.0
+
+ 2.2.0
true
@@ -23,12 +23,22 @@
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
+ com.alibaba.nacos
+ nacos-client
+ ${nacos.version}
+
+ pure
+
+
+
+ com.alibaba.nacos
+ nacos-common
+ ${nacos.version}
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
+ com.alibaba.nacos
+ nacos-api
+ ${nacos.version}
@@ -62,13 +72,6 @@
pom
import
-
- com.alibaba.cloud
- spring-cloud-alibaba-dependencies
- ${spring-cloud-alibaba.version}
- pom
- import
-
diff --git a/src/main/java/cn/com/xuxiaowei/nacos/sentinel/listener/NacosDiscoveryListener.java b/src/main/java/cn/com/xuxiaowei/nacos/sentinel/listener/NacosDiscoveryListener.java
new file mode 100644
index 0000000..e637370
--- /dev/null
+++ b/src/main/java/cn/com/xuxiaowei/nacos/sentinel/listener/NacosDiscoveryListener.java
@@ -0,0 +1,88 @@
+package cn.com.xuxiaowei.nacos.sentinel.listener;
+
+import cn.com.xuxiaowei.nacos.sentinel.properties.NacosSentinelDiscoveryProperties;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.exception.NacosException;
+import com.alibaba.nacos.api.naming.NamingFactory;
+import com.alibaba.nacos.api.naming.NamingService;
+import com.alibaba.nacos.api.naming.pojo.Instance;
+import com.alibaba.nacos.api.naming.pojo.ListView;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * Nacos 注册中心 监听程序
+ *
+ * @author xuxiaowei
+ * @see 0.0.1
+ */
+@Slf4j
+@Component
+public class NacosDiscoveryListener {
+
+ private NacosSentinelDiscoveryProperties nacosSentinelDiscoveryProperties;
+
+ @Autowired
+ public void setNacosSentinelDiscoveryProperties(NacosSentinelDiscoveryProperties nacosSentinelDiscoveryProperties) {
+ this.nacosSentinelDiscoveryProperties = nacosSentinelDiscoveryProperties;
+ }
+
+ @EventListener(ApplicationReadyEvent.class)
+ public void ready() throws NacosException {
+ Properties properties = nacosSentinelDiscoveryProperties.getProperties();
+
+ log.info("{}: {}", PropertyKeyConst.SERVER_ADDR, properties.getProperty(PropertyKeyConst.SERVER_ADDR));
+ log.info("{}: {}", PropertyKeyConst.NAMESPACE, properties.getProperty(PropertyKeyConst.NAMESPACE));
+
+ NamingService namingService = NamingFactory.createNamingService(properties);
+
+ int pageNo = nacosSentinelDiscoveryProperties.getPageNo();
+ int pageSize = nacosSentinelDiscoveryProperties.getPageSize();
+ String groupName = nacosSentinelDiscoveryProperties.getGroupName();
+
+ ListView servicesOfServer = namingService.getServicesOfServer(pageNo, pageSize, groupName);
+ List serviceNames = servicesOfServer.getData();
+
+ log.info("service size: {}", serviceNames.size());
+
+ int maxLength = 0;
+ for (String serviceName : serviceNames) {
+ maxLength = Math.max(maxLength, serviceName.length());
+ }
+
+ log.info("service healthy:");
+ for (String serviceName : serviceNames) {
+ List instanceOnline = namingService.selectInstances(serviceName, true);
+ List instanceOffline = namingService.selectInstances(serviceName, false);
+ log.info("{}:\ttrue: {}\tfalse: {}", String.format("%-" + maxLength + "s", serviceName), instanceOnline.size(), instanceOffline.size());
+ }
+
+ log.info("service instance:");
+ for (String serviceName : serviceNames) {
+ List instanceOnline = namingService.selectInstances(serviceName, true);
+ if (!instanceOnline.isEmpty()) {
+ for (Instance instance : instanceOnline) {
+ String ip = instance.getIp();
+ int port = instance.getPort();
+ log.info("{} instance healthy true: {}:{}", String.format("%-" + maxLength + "s", serviceName), ip, port);
+ }
+ }
+
+ List instanceOffline = namingService.selectInstances(serviceName, false);
+ if (!instanceOffline.isEmpty()) {
+ for (Instance instance : instanceOffline) {
+ String ip = instance.getIp();
+ int port = instance.getPort();
+ log.info("{} instance healthy false: {}:{}", String.format("%-" + maxLength + "s", serviceName), ip, port);
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/cn/com/xuxiaowei/nacos/sentinel/properties/NacosSentinelDiscoveryProperties.java b/src/main/java/cn/com/xuxiaowei/nacos/sentinel/properties/NacosSentinelDiscoveryProperties.java
new file mode 100644
index 0000000..fd62a3a
--- /dev/null
+++ b/src/main/java/cn/com/xuxiaowei/nacos/sentinel/properties/NacosSentinelDiscoveryProperties.java
@@ -0,0 +1,39 @@
+package cn.com.xuxiaowei.nacos.sentinel.properties;
+
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.common.Constants;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Properties;
+
+/**
+ * Nacos 监控 注册中心 配置
+ *
+ * @author xuxiaowei
+ * @since 0.0.1
+ */
+@Data
+@Component
+@ConfigurationProperties("nacos.sentinel.discovery")
+public class NacosSentinelDiscoveryProperties {
+
+ private String serverAddr = "127.0.0.1:8848";
+
+ private String namespace = "public";
+
+ private int pageNo = 1;
+
+ private int pageSize = Integer.MAX_VALUE;
+
+ private String groupName = Constants.DEFAULT_GROUP;
+
+ public Properties getProperties() {
+ Properties properties = new Properties();
+ properties.setProperty(PropertyKeyConst.SERVER_ADDR, serverAddr);
+ properties.setProperty(PropertyKeyConst.NAMESPACE, namespace);
+ return properties;
+ }
+
+}
diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml
index d569169..1a695e8 100644
--- a/src/main/resources/application.yaml
+++ b/src/main/resources/application.yaml
@@ -2,18 +2,8 @@ spring:
application:
name: nacos-sentinel
---
-spring:
- config:
- import: nacos:nacos-config-example.properties?refresh=true
- cloud:
- inetutils:
- ignored-interfaces:
- - VMware.*
- - VirtualBox.*
- nacos:
- config:
- server-addr: ${NACOS_SENTINEL_CONFIG_SERVER_ADDR:127.0.0.1:8848}
- namespace: ${NACOS_SENTINEL_CONFIG_NAMESPACE:public}
- discovery:
- server-addr: ${NACOS_SENTINEL_DISCOVERY_SERVER_ADDR:127.0.0.1:8848}
- namespace: ${NACOS_SENTINEL_DISCOVERY_NAMESPACE:public}
+nacos:
+ sentinel:
+ discovery:
+ server-addr: ${NACOS_SENTINEL_DISCOVERY_SERVER_ADDR:127.0.0.1:8848}
+ namespace: ${NACOS_SENTINEL_DISCOVERY_NAMESPACE:public}