瀏覽代碼

分布式定时任务调度系统xxl-job

ZhangWenQiang 5 年之前
父節點
當前提交
21f9079217

+ 15 - 0
cloud/docker-compose/happy-cloud/docker-compose.yml

@@ -44,6 +44,21 @@ services:
     networks:
       - custom_net
 
+  #分布式定时任务
+  happy-cloud-xxl-job:
+    build:
+      context: /mnt/product/cloud/jar/happy-cloud-xxl-job
+    restart: always
+    container_name: happy-cloud-xxl-job
+    hostname: happy-cloud-xxl-job
+    image: happy-cloud-xxl-job
+    volumes:
+      - /mnt/product/cloud/jar/happy-cloud-xxl-job/log:/cloud/logs/happy-cloud-xxl-job
+    environment:
+      - "TZ=Asia/Shanghai"
+    networks:
+      - custom_net
+
 #  happy-cloud-auth:
 #    build:
 #      context: /mnt/product/cloud/jar/happy-cloud-auth

+ 9 - 0
docker-compose.yml

@@ -72,6 +72,15 @@ services:
     hostname: happy-cloud-wisdom
     image: happy-cloud-wisdom
 
+  #分布式定时任务
+  happy-cloud-xxl-job:
+    build:
+      context: ./happy-cloud-xxl-job/happy-cloud-xxl-job-admin
+    restart: always
+    container_name: happy-cloud-xxl-job
+    hostname: happy-cloud-xxl-job
+    image: happy-cloud-xxl-job
+
 #  happy-cloud-auth:
 #    build:
 #      context: ./happy-cloud-auth

+ 7 - 0
happy-cloud-wisdom/happy-cloud-wisdom-biz/pom.xml

@@ -26,6 +26,13 @@
             <artifactId>logstash-logback-encoder</artifactId>
             <version>${logstash-logback-encoder.version}</version>
         </dependency>
+
+        <!-- xxl-job-core -->
+        <dependency>
+            <groupId>org.happyframework.cloud</groupId>
+            <artifactId>happy-cloud-xxl-job-core</artifactId>
+            <version>2.2.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 78 - 0
happy-cloud-wisdom/happy-cloud-wisdom-biz/src/main/java/org/jeecg/common/config/XxlJobConfig.java

@@ -0,0 +1,78 @@
+package org.jeecg.common.config;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * xxl-job config
+ *
+ * @author zwq 2020-07-28
+ */
+@Configuration
+public class XxlJobConfig {
+    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
+
+    @Value("${xxl.job.admin.addresses}")
+    private String adminAddresses;
+
+    @Value("${xxl.job.accessToken}")
+    private String accessToken;
+
+    @Value("${xxl.job.executor.appname}")
+    private String appname;
+
+    @Value("${xxl.job.executor.address}")
+    private String address;
+
+    @Value("${xxl.job.executor.ip}")
+    private String ip;
+
+    @Value("${xxl.job.executor.port}")
+    private int port;
+
+    @Value("${xxl.job.executor.logpath}")
+    private String logPath;
+
+    @Value("${xxl.job.executor.logretentiondays}")
+    private int logRetentionDays;
+
+
+    @Bean
+    public XxlJobSpringExecutor xxlJobExecutor() {
+        logger.info(">>>>>>>>>>> xxl-job config init.");
+        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+        xxlJobSpringExecutor.setAppname(appname);
+        xxlJobSpringExecutor.setAddress(address);
+        xxlJobSpringExecutor.setIp(ip);
+        xxlJobSpringExecutor.setPort(port);
+        xxlJobSpringExecutor.setAccessToken(accessToken);
+        xxlJobSpringExecutor.setLogPath(logPath);
+        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+        return xxlJobSpringExecutor;
+    }
+
+    /**
+     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
+     *
+     *      1、引入依赖:
+     *          <dependency>
+     *             <groupId>org.springframework.cloud</groupId>
+     *             <artifactId>spring-cloud-commons</artifactId>
+     *             <version>${version}</version>
+     *         </dependency>
+     *
+     *      2、配置文件,或者容器启动变量
+     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
+     *
+     *      3、获取IP
+     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
+     */
+
+
+}

+ 9 - 6
happy-cloud-wisdom/happy-cloud-wisdom-biz/src/main/java/org/jeecg/modules/hlwpayment/task/PaymentJob.java

@@ -2,6 +2,9 @@ package org.jeecg.modules.hlwpayment.task;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.util.DateUtils;
@@ -18,9 +21,6 @@ import org.jeecg.modules.hlwsubcontractor.entity.HlwSubcontractor;
 import org.jeecg.modules.hlwsubcontractor.service.IHlwSubcontractorService;
 import org.jeecg.modules.utils.HlwConstant;
 import org.jeecg.modules.utils.PayCommon;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
@@ -39,7 +39,7 @@ import java.util.List;
 @Slf4j
 @Component
 @Service
-public class PaymentJob implements Job {
+public class PaymentJob {
     @Autowired
     private IHlwPayRecordService hlwPayRecordService;
     @Autowired
@@ -52,10 +52,12 @@ public class PaymentJob implements Job {
     private IHlwDutyApplyService hlwDutyApplyService;
 
 
-    @Override
+    @XxlJob("paymentJobHandler")
     @Transactional(rollbackFor = Exception.class)
-    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+    public ReturnT<String> paymentJobHandler(String param) throws Exception {
         log.info(String.format(" 支付查询定时器!  时间:" + DateUtils.getTimestamp()));
+        XxlJobLogger.log(String.format(" 支付查询定时器!  时间:" + DateUtils.getTimestamp()));
+
         //查询所有没结果的付款批次(终态包括:VD,CL,WF,UF,OF,SY)
         List<HlwPayRecord> hlwPayRecordList = hlwPayRecordService.findNoPayList();
         //完税金额
@@ -164,6 +166,7 @@ public class PaymentJob implements Job {
                 }
             }
         }
+        return ReturnT.SUCCESS;
     }
 
     /**

+ 2 - 1
pom.xml

@@ -23,7 +23,8 @@
         <module>happy-cloud-monitor</module>
         <module>happy-cloud-auth</module>
         <module>happy-cloud-sentinel</module>
-    </modules>
+		<module>happy-cloud-xxl-job</module>
+	</modules>
 
 	<distributionManagement>
 	  	<repository>