Browse Source

1.增加nacos注册和注销逻辑。2.增加各个环境的启动环境参数

test
wangxianzhang 3 years ago
parent
commit
7abc31cfa5
  1. 8
      deploy/docker-compose-dev.yml
  2. 2
      deploy/docker-compose-prod.yml
  3. 2
      deploy/docker-compose-test.yml
  4. 8
      pom.xml
  5. 137
      src/main/java/com/epmet/jmreport/config/NacosRegisterConfig.java
  6. 5
      src/main/resources/application-dev.yml
  7. 5
      src/main/resources/application-prod.yml
  8. 6
      src/main/resources/application-test.yml
  9. 5
      src/main/resources/application.yml

8
deploy/docker-compose-dev.yml

@ -1,15 +1,15 @@
version: "3.7" version: "3.7"
services: services:
epmet-jmreport: epmet-jmreport-server:
container_name: epmet-jmreport container_name: epmet-jmreport-server
image: 192.168.1.140:5000/epmet-cloud-dev/epmet-jmreport:version_placeholder image: 192.168.1.140:5000/epmet-cloud-dev/epmet-jmreport-server:version_placeholder
ports: ports:
- "8118:8118" - "8118:8118"
network_mode: host # 使用现有网络 network_mode: host # 使用现有网络
volumes: volumes:
- "/opt/epmet-cloud-logs/dev:/logs" - "/opt/epmet-cloud-logs/dev:/logs"
environment: 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" restart: "unless-stopped"
logging: logging:
driver: local driver: local

2
deploy/docker-compose-prod.yml

@ -9,7 +9,7 @@ services:
volumes: volumes:
- "/opt/epmet-cloud-logs/prod:/logs" - "/opt/epmet-cloud-logs/prod:/logs"
environment: 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" restart: "unless-stopped"
logging: logging:
driver: local driver: local

2
deploy/docker-compose-test.yml

@ -9,7 +9,7 @@ services:
volumes: volumes:
- "/opt/epmet-cloud-logs/test:/logs" - "/opt/epmet-cloud-logs/test:/logs"
environment: 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" restart: "unless-stopped"
logging: logging:
driver: local driver: local

8
pom.xml

@ -46,6 +46,14 @@
<dependencies> <dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-discovery-spring-boot-starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.2</version>
</dependency>
<!-- Lombok --> <!-- Lombok -->
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>

137
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<NetworkInterface> 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<InetAddress> 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;
}
}

5
src/main/resources/application-dev.yml

@ -5,3 +5,8 @@ mysql:
db: epmet_jmreport db: epmet_jmreport
username: root username: root
password: root password: root
nacos:
discovery:
server-addr: 192.168.1.140:8848
namespace: 1fecc730-5e6e-464c-aae9-7567944e7936

5
src/main/resources/application-prod.yml

@ -5,3 +5,8 @@ mysql:
db: epmet_jmreport db: epmet_jmreport
username: epmet_jmreport_user username: epmet_jmreport_user
password: EpmEt-db-UsEr password: EpmEt-db-UsEr
nacos:
discovery:
server-addr: 192.168.11.180:8848
namespace: bd205d23-e696-47be-b995-916313f86e99

6
src/main/resources/application-test.yml

@ -5,3 +5,9 @@ mysql:
db: epmet_jmreport db: epmet_jmreport
username: epmet username: epmet
password: elink@833066 password: elink@833066
nacos:
discovery:
server-addr: 192.168.10.150:8848
namespace: 67e3c350-533e-4d7c-9f8f-faf1b4aa82ae

5
src/main/resources/application.yml

@ -1,12 +1,17 @@
server: server:
port: 8118 port: 8118
spring: spring:
application:
name: epmet-jmreport-server
#数据库 #数据库
datasource: 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 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} username: ${mysql.username:root}
password: ${mysql.password:root} password: ${mysql.password:root}
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
profiles:
active: dev
jeecg : jeecg :
# local|minio|alioss # local|minio|alioss
uploadType: local uploadType: local

Loading…
Cancel
Save