Browse Source

fix bug:调整定时任务组件注册netty端口的获取方式

lijie 3 years ago
parent
commit
c32c5555e8

+ 33 - 4
dmp-comp/dmp-job-executor-starter/src/main/java/com/persagy/dmp/job/config/XxlJobConfig.java

@@ -1,12 +1,17 @@
 package com.persagy.dmp.job.config;
 
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
 
 /**
  * xxl-job config
@@ -26,14 +31,14 @@ public class XxlJobConfig {
     @Value("${xxl.job.executor.appname:${spring.application.name}-job-executor}")
     private String appname;
 
-    @Value("${xxl.job.executor.address:http://${spring.application.name}:${server.port}}")
+    @Value("${xxl.job.executor.address:}")
     private String address;
 
-    @Value("${xxl.job.executor.ip:${spring.application.name}}")
+    @Value("${xxl.job.executor.ip:}")
     private String ip;
 
-    @Value("${xxl.job.executor.port:${server.port}}")
-    private int port;
+    @Value("${xxl.job.executor.port:}")
+    private Integer port;
 
     @Value("${xxl.job.executor.logpath:./logs/job-executor/application/jobHandler}")
     private String logPath;
@@ -41,11 +46,35 @@ public class XxlJobConfig {
     @Value("${xxl.job.executor.logretentiondays:7}")
     private int logRetentionDays;
 
+    @Autowired
+    private Environment environment;
+
+    /**应用名称key*/
+    private final static String APPLICATION_NAME="spring.application.name";
+    /**http协议头*/
+    private final static String HTTP_HEAD="http://";
+    /**应用端口*/
+    private final static String SERVER_PORT="server.port";
+
 
     @Bean
     public XxlJobSpringExecutor xxlJobExecutor() {
         log.info(">>>>>>>>>>> xxl-job config init.");
         XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+        if (StrUtil.isNotBlank(environment.getProperty(APPLICATION_NAME))
+                && StrUtil.isNotBlank(environment.getProperty(SERVER_PORT))
+                && NumberUtil.isNumber(environment.getProperty(SERVER_PORT))){
+            if (StrUtil.isBlank(address)){
+                address=HTTP_HEAD+environment.getProperty(APPLICATION_NAME)
+                        +StrUtil.COLON+(NumberUtil.parseInt(environment.getProperty(SERVER_PORT))+1);
+            }
+            if (StrUtil.isBlank(ip)){
+                ip=environment.getProperty(APPLICATION_NAME);
+            }
+            if (ObjectUtil.isNull(port)){
+                port=NumberUtil.parseInt(environment.getProperty(SERVER_PORT))+1;
+            }
+        }
         xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
         xxlJobSpringExecutor.setAppname(appname);
         xxlJobSpringExecutor.setAddress(address);