From 7abc31cfa5c20058e054ac0f61b27f361f451f45 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 9 Aug 2022 12:43:05 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0nacos=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E5=92=8C=E6=B3=A8=E9=94=80=E9=80=BB=E8=BE=91=E3=80=822.?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=84=E4=B8=AA=E7=8E=AF=E5=A2=83=E7=9A=84?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=8E=AF=E5=A2=83=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/docker-compose-dev.yml | 8 +- deploy/docker-compose-prod.yml | 2 +- deploy/docker-compose-test.yml | 2 +- pom.xml | 8 + .../jmreport/config/NacosRegisterConfig.java | 137 ++++++++++++++++++ src/main/resources/application-dev.yml | 5 + src/main/resources/application-prod.yml | 7 +- src/main/resources/application-test.yml | 8 +- src/main/resources/application.yml | 5 + 9 files changed, 174 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/epmet/jmreport/config/NacosRegisterConfig.java diff --git a/deploy/docker-compose-dev.yml b/deploy/docker-compose-dev.yml index f90777c..83d666d 100644 --- a/deploy/docker-compose-dev.yml +++ b/deploy/docker-compose-dev.yml @@ -1,15 +1,15 @@ version: "3.7" services: - epmet-jmreport: - container_name: epmet-jmreport - image: 192.168.1.140:5000/epmet-cloud-dev/epmet-jmreport:version_placeholder + epmet-jmreport-server: + container_name: epmet-jmreport-server + image: 192.168.1.140:5000/epmet-cloud-dev/epmet-jmreport-server:version_placeholder ports: - "8118:8118" network_mode: host # 使用现有网络 volumes: - "/opt/epmet-cloud-logs/dev:/logs" environment: - RUN_INSTRUCT: "java -Xms32m -Xmx200m -jar ./epmet-jmreport.jar" + RUN_INSTRUCT: "java -Xms32m -Xmx200m -Dspring.profiles.active=dev -jar ./epmet-jmreport.jar" restart: "unless-stopped" logging: driver: local diff --git a/deploy/docker-compose-prod.yml b/deploy/docker-compose-prod.yml index 98de180..c6359fb 100644 --- a/deploy/docker-compose-prod.yml +++ b/deploy/docker-compose-prod.yml @@ -9,7 +9,7 @@ services: volumes: - "/opt/epmet-cloud-logs/prod:/logs" environment: - RUN_INSTRUCT: "java -Xms256m -Xmx512m -jar ./epmet-jmreport.jar" + RUN_INSTRUCT: "java -Xms256m -Xmx512m -Dspring.profiles.active=prod -jar ./epmet-jmreport.jar" restart: "unless-stopped" logging: driver: local diff --git a/deploy/docker-compose-test.yml b/deploy/docker-compose-test.yml index 17e9995..6bc0fe3 100644 --- a/deploy/docker-compose-test.yml +++ b/deploy/docker-compose-test.yml @@ -9,7 +9,7 @@ services: volumes: - "/opt/epmet-cloud-logs/test:/logs" environment: - RUN_INSTRUCT: "java -Xms32m -Xmx200m -jar ./epmet-jmreport.jar" + RUN_INSTRUCT: "java -Xms32m -Xmx200m -Dspring.profiles.active=test -jar ./epmet-jmreport.jar" restart: "unless-stopped" logging: driver: local diff --git a/pom.xml b/pom.xml index bbd1291..24e28a5 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,14 @@ + + + + com.alibaba.boot + nacos-discovery-spring-boot-starter + 0.2.2 + + org.projectlombok diff --git a/src/main/java/com/epmet/jmreport/config/NacosRegisterConfig.java b/src/main/java/com/epmet/jmreport/config/NacosRegisterConfig.java new file mode 100644 index 0000000..a5df626 --- /dev/null +++ b/src/main/java/com/epmet/jmreport/config/NacosRegisterConfig.java @@ -0,0 +1,137 @@ +package com.epmet.jmreport.config; + +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 lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import java.io.IOException; +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.Properties; + +/** + * nacos注册配置 + */ +@Component +@Slf4j +public class NacosRegisterConfig { + + @Value("${server.port}") + private String port; + + @Value("${spring.application.name}") + private String serviceName; + + @Value("${nacos.discovery.namespace}") + private String namespace; + + @Value("${nacos.discovery.server-addr}") + private String nacosServerAddr; + + private NamingService naming; + + /** + * 启动之后,手动注册此实例到nacos + */ + @PostConstruct + public void register() { + try { + naming = NamingFactory.createNamingService(initProperties()); + + InetAddress localIp = findFirstNonLoopbackAddress(); + naming.registerInstance(serviceName, localIp.getHostAddress(), Integer.valueOf(port)); + log.info("【积木报表服务】启动环节-注册到nacos成功"); + } catch (NacosException e) { + log.error("【积木报表服务】启动环节-注册到nacos失败:{}", e.getMessage()); + } + } + + /** + * 初始化配置属性 + * @return + */ + private Properties initProperties() { + Properties properties = new Properties(); + properties.setProperty(PropertyKeyConst.NAMESPACE, namespace); + properties.setProperty(PropertyKeyConst.SERVER_ADDR, nacosServerAddr); + //properties.setProperty(PropertyKeyConst.CLUSTER_NAME, nacosServerAddr); + + return properties; + } + + /** + * 关闭之前,手动调用注销接口,从nacos注销此实例 + */ + @PreDestroy + public void deregister() { + try { + InetAddress localIp = findFirstNonLoopbackAddress(); + naming.deregisterInstance(serviceName, localIp.getHostAddress(), Integer.valueOf(port)); + log.info("【积木报表服务】启动环节-从nacos注销成功"); + } catch (NacosException e) { + log.error("【积木报表服务】启动环节-从nacos注销失败:{}", e.getMessage()); + } + } + + /** + * 获取本机的IP地址 + * from org.springframework.cloud.commons.util.InetUtils#findFirstNonLoopbackAddress + * @return + */ + public InetAddress findFirstNonLoopbackAddress() { + InetAddress result = null; + try { + int lowest = Integer.MAX_VALUE; + for (Enumeration nics = NetworkInterface.getNetworkInterfaces(); nics.hasMoreElements();) { + NetworkInterface ifc = nics.nextElement(); + if (ifc.isUp()) { + this.log.trace("Testing interface: " + ifc.getDisplayName()); + if (ifc.getIndex() < lowest || result == null) { + lowest = ifc.getIndex(); + } + else if (result != null) { + continue; + } + + for (Enumeration addrs = ifc + .getInetAddresses(); addrs.hasMoreElements();) { + InetAddress address = addrs.nextElement(); + if (address instanceof Inet4Address + && !address.isLoopbackAddress()) { + this.log.trace("Found non-loopback interface: " + + ifc.getDisplayName()); + result = address; + } + } + } + } + } + catch (IOException ex) { + this.log.error("Cannot get first non-loopback address", ex); + } + + if (result != null) { + return result; + } + + try { + return InetAddress.getLocalHost(); + } + catch (UnknownHostException e) { + this.log.warn("Unable to retrieve localhost"); + } + + return null; + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 5a4d828..ddcca12 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -5,3 +5,8 @@ mysql: db: epmet_jmreport username: root password: root + +nacos: + discovery: + server-addr: 192.168.1.140:8848 + namespace: 1fecc730-5e6e-464c-aae9-7567944e7936 \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index e5a99a0..0e5b8cd 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -4,4 +4,9 @@ mysql: port: 3306 db: epmet_jmreport username: epmet_jmreport_user - password: EpmEt-db-UsEr \ No newline at end of file + password: EpmEt-db-UsEr + +nacos: + discovery: + server-addr: 192.168.11.180:8848 + namespace: bd205d23-e696-47be-b995-916313f86e99 \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 02ca04b..af68834 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -4,4 +4,10 @@ mysql: port: 3306 db: epmet_jmreport username: epmet - password: elink@833066 \ No newline at end of file + password: elink@833066 + + +nacos: + discovery: + server-addr: 192.168.10.150:8848 + namespace: 67e3c350-533e-4d7c-9f8f-faf1b4aa82ae \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1ef558c..ada1912 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,12 +1,17 @@ server: port: 8118 spring: + application: + name: epmet-jmreport-server #数据库 datasource: url: jdbc:mysql://${mysql.host:192.168.1.140}:${mysql.port:3306}/${mysql.db:epmet_jmreport}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: ${mysql.username:root} password: ${mysql.password:root} driver-class-name: com.mysql.cj.jdbc.Driver + profiles: + active: dev + jeecg : # local|minio|alioss uploadType: local