浏览代码

新增redis消息队列

wangliang 4 年之前
父节点
当前提交
52942f06cc

+ 0 - 46
distributed-print/src/main/java/com/qmth/distributed/print/start/StartRunning.java

@@ -21,9 +21,6 @@ import javax.annotation.Resource;
 public class StartRunning implements CommandLineRunner {
     private final static Logger log = LoggerFactory.getLogger(StartRunning.class);
 
-//    @Resource
-//    QuartzService quartzService;
-
     @Resource
     private OrgCenterDataDisposeService orgCenterDataDisposeService;
 
@@ -35,50 +32,7 @@ public class StartRunning implements CommandLineRunner {
         log.info("服务器启动时执行 start");
         SystemConstant.initTempFiles();
         orgCenterDataDisposeService.updateSchoolInfo();
-
         printCommonService.updateStatus();
-
-//        log.info("增加学校信息同步定时任务 start");
-//        Map schoolJobMap = new HashMap();
-//        schoolJobMap.computeIfAbsent("name", v -> TimedSyncSchoolJob.class.getName());
-//        quartzService.deleteJob(JobEnum.TIMED_SYNC_SCHOOL_JOB.name(), JobEnum.TIMED_TASK_JOB_GROUP.name());
-//        // 每天0点定时任务
-////        quartzService.addJob(TimedSyncSchoolJob.class, JobEnum.TIMED_SYNC_SCHOOL_JOB.name(), JobEnum.TIMED_TASK_JOB_GROUP.name(), "0 0 0 * * ?", schoolJobMap);
-//        quartzService.addJob(TimedSyncSchoolJob.class, JobEnum.TIMED_SYNC_SCHOOL_JOB.name(), JobEnum.TIMED_TASK_JOB_GROUP.name(), "0 0/1 * * * ?", schoolJobMap);
-//        log.info("增加学校信息同步定时任务 end");
-//
-////        log.info("增加重新生成pdf定时任务 start");
-////        Map taskJobMap = new HashMap();
-////        schoolJobMap.computeIfAbsent("name", v -> ResetCreatePdfJob.class.getName());
-////        quartzService.deleteJob(JobEnum.RESET_CREATE_PDF_JOB.name(), JobEnum.RESET_CREATE_PDF_JOB_GROUP.name());
-////         //每天0点定时任务
-////        quartzService.addJob(ResetCreatePdfJob.class, JobEnum.RESET_CREATE_PDF_JOB.name(), JobEnum.RESET_CREATE_PDF_JOB_GROUP.name(), "0 0/1 * * * ?", taskJobMap);
-////        log.info("增加重新生成pdf定时任务 end");
-//
-//        log.info("增加任务到期提醒定时任务 start");
-//        Map expireJobMap = new HashMap();
-//        expireJobMap.computeIfAbsent("name", v -> SendSmsExpireJob.class.getName());
-//        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB_GROUP.name());
-//        // 每天15点定时任务
-//        quartzService.addJob(SendSmsExpireJob.class, JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB_GROUP.name(), "0 0 15 * * ?", expireJobMap);
-//        log.info("增加任务到期提醒定时任务 end");
-//
-//        log.info("增加任务逾期提醒定时任务 start");
-//        Map orverdueJobMap = new HashMap();
-//        orverdueJobMap.computeIfAbsent("name", v -> SendSmsOverdueJob.class.getName());
-//        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB_GROUP.name());
-//        // 每天9点定时任务
-//        quartzService.addJob(SendSmsOverdueJob.class, JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB_GROUP.name(), "0 0 9 * * ?", orverdueJobMap);
-//        log.info("增加任务逾期提醒定时任务 end");
-//
-//        log.info("增加短信发送失败重发定时任务 start");
-//        Map rensendJobMap = new HashMap();
-//        rensendJobMap.computeIfAbsent("name", v -> ResendSmsJob.class.getName());
-//        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB_GROUP.name());
-//        // 每隔1小时定时任务
-//        quartzService.addJob(ResendSmsJob.class, JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB_GROUP.name(), "0 0/30 * * * ?", rensendJobMap);
-//        log.info("增加短信发送失败重发定时任务 end");
-
         log.info("服务器启动时执行 end");
     }
 }

+ 1 - 1
distributed-print/src/main/resources/application-dev.properties

@@ -55,7 +55,7 @@ sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/w
 sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
 sys.config.autoCreatePdfResetMaxCount=5
 sys.config.threadPoolCoreSize=1
-sys.config.customThreadPoolCoreSize=false
+sys.config.customThreadPoolCoreSize=true
 sys.config.sessionActive=4h
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 

+ 1 - 4
distributed-print/src/main/java/com/qmth/distributed/print/config/RedisListenerConfig.java → teachcloud-task/src/main/java/com/qmth/teachcloud/task/config/RedisListenerConfig.java

@@ -1,14 +1,11 @@
-package com.qmth.distributed.print.config;
+package com.qmth.teachcloud.task.config;
 
-import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.enums.MqTagEnum;
 import com.qmth.teachcloud.common.threadPool.MyThreadPool;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.MessageListener;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.listener.ChannelTopic;
 import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 import org.springframework.data.redis.listener.Topic;

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/config/RedisMessageListener.java → teachcloud-task/src/main/java/com/qmth/teachcloud/task/config/RedisMessageListener.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.config;
+package com.qmth.teachcloud.task.config;
 
 import com.google.gson.Gson;
 import com.qmth.teachcloud.common.bean.dto.MqDto;

+ 5 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/enums/JobEnum.java

@@ -29,7 +29,11 @@ public enum JobEnum {
 
     SMS_NOTICE_TASK_RESEND_JOB("短信发送失败重发定时任务"),
 
-    SMS_NOTICE_TASK_RESEND_JOB_GROUP("短信发送失败重发定时任务job组");
+    SMS_NOTICE_TASK_RESEND_JOB_GROUP("短信发送失败重发定时任务job组"),
+
+    REDIS_MQ_JOB("学校信息同步定时任务"),
+
+    REDIS_MQ_JOB_GROUP("学校信息同步定时任务组");
 
     private String title;
 

+ 32 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/RedisMqSyncJob.java

@@ -0,0 +1,32 @@
+package com.qmth.teachcloud.task.job;
+
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.task.job.service.JobService;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+
+/**
+ * @Description: redis mq消息同步
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/7/9
+ */
+public class RedisMqSyncJob extends QuartzJobBean {
+
+    @Resource
+    JobService jobService;
+
+    @Override
+    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        try {
+            jobService.assembleJob(SystemConstant.MQ_TOPIC_BUFFER_LIST);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 11 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/JobService.java

@@ -1,6 +1,10 @@
 package com.qmth.teachcloud.task.job.service;
 
+import com.qmth.teachcloud.common.bean.dto.MqDto;
+
 import java.io.IOException;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Description: job service
@@ -42,4 +46,11 @@ public interface JobService {
      * 重发失败短信
      */
     void resendSmsTask();
+
+    /**
+     * 组装job
+     *
+     * @param redisKey
+     */
+    public void assembleJob(String redisKey);
 }

+ 24 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -5,9 +5,11 @@ import com.qmth.distributed.print.business.entity.ExamDetail;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.service.OrgCenterDataDisposeService;
 import com.qmth.teachcloud.common.service.SysConfigService;
+import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.task.job.service.JobService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -18,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -55,6 +58,9 @@ public class JobServiceImpl implements JobService {
     @Autowired
     private SysConfigService sysConfigService;
 
+    @Resource
+    RedisUtil redisUtil;
+
     @Override
     public void updateSchoolInfo() throws IOException {
         orgCenterDataDisposeService.updateSchoolInfo();
@@ -115,4 +121,22 @@ public class JobServiceImpl implements JobService {
     public void resendSmsTask() {
         basicMessageService.resendSmsTask();
     }
+
+    /**
+     * 组装job
+     *
+     * @param redisKey
+     */
+    @Override
+    public void assembleJob(String redisKey) {
+        Long size = redisUtil.getHashSize(redisKey);
+        if (Objects.nonNull(size) && size.longValue() > 0) {
+            log.info("redisKey:{}缓冲区的消息数为:{}", redisKey, size);
+            Map map = redisUtil.getHashEntries(redisKey);
+            map.forEach((k, v) -> {
+                MqDto mqDto = (MqDto) v;
+                redisUtil.sendMessage(mqDto.getTopic(), mqDto);
+            });
+        }
+    }
 }

+ 55 - 2
teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

@@ -2,12 +2,17 @@ package com.qmth.teachcloud.task.start;
 
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.service.OrgCenterDataDisposeService;
+import com.qmth.teachcloud.task.enums.JobEnum;
+import com.qmth.teachcloud.task.job.*;
+import com.qmth.teachcloud.task.service.QuartzService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @Description: 服务启动时初始化运行,哪个微服务模块需要则拿此模版去用
@@ -21,13 +26,61 @@ public class StartRunning implements CommandLineRunner {
     private final static Logger log = LoggerFactory.getLogger(StartRunning.class);
 
     @Resource
-    private OrgCenterDataDisposeService orgCenterDataDisposeService;
+    QuartzService quartzService;
 
     @Override
     public void run(String... args) throws Exception {
         log.info("服务器启动时执行 start");
         SystemConstant.initTempFiles();
-//        orgCenterDataDisposeService.updateSchoolInfo();
+
+        log.info("增加学校信息同步定时任务 start");
+        Map schoolJobMap = new HashMap();
+        schoolJobMap.computeIfAbsent("name", v -> TimedSyncSchoolJob.class.getName());
+        quartzService.deleteJob(JobEnum.TIMED_SYNC_SCHOOL_JOB.name(), JobEnum.TIMED_TASK_JOB_GROUP.name());
+        // 每天0点定时任务
+        quartzService.addJob(TimedSyncSchoolJob.class, JobEnum.TIMED_SYNC_SCHOOL_JOB.name(), JobEnum.TIMED_TASK_JOB_GROUP.name(), "0 0 0 * * ?", schoolJobMap);
+        log.info("增加学校信息同步定时任务 end");
+
+//        log.info("增加重新生成pdf定时任务 start");
+//        Map taskJobMap = new HashMap();
+//        schoolJobMap.computeIfAbsent("name", v -> ResetCreatePdfJob.class.getName());
+//        quartzService.deleteJob(JobEnum.RESET_CREATE_PDF_JOB.name(), JobEnum.RESET_CREATE_PDF_JOB_GROUP.name());
+//         //每天0点定时任务
+//        quartzService.addJob(ResetCreatePdfJob.class, JobEnum.RESET_CREATE_PDF_JOB.name(), JobEnum.RESET_CREATE_PDF_JOB_GROUP.name(), "0 0/1 * * * ?", taskJobMap);
+//        log.info("增加重新生成pdf定时任务 end");
+
+        log.info("增加任务到期提醒定时任务 start");
+        Map expireJobMap = new HashMap();
+        expireJobMap.computeIfAbsent("name", v -> SendSmsExpireJob.class.getName());
+        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB_GROUP.name());
+        // 每天15点定时任务
+        quartzService.addJob(SendSmsExpireJob.class, JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB_GROUP.name(), "0 0 15 * * ?", expireJobMap);
+        log.info("增加任务到期提醒定时任务 end");
+
+        log.info("增加任务逾期提醒定时任务 start");
+        Map orverdueJobMap = new HashMap();
+        orverdueJobMap.computeIfAbsent("name", v -> SendSmsOverdueJob.class.getName());
+        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB_GROUP.name());
+        // 每天9点定时任务
+        quartzService.addJob(SendSmsOverdueJob.class, JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB_GROUP.name(), "0 0 9 * * ?", orverdueJobMap);
+        log.info("增加任务逾期提醒定时任务 end");
+
+        log.info("增加短信发送失败重发定时任务 start");
+        Map rensendJobMap = new HashMap();
+        rensendJobMap.computeIfAbsent("name", v -> ResendSmsJob.class.getName());
+        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB_GROUP.name());
+        // 每隔1小时定时任务
+        quartzService.addJob(ResendSmsJob.class, JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB_GROUP.name(), "0 0/30 * * * ?", rensendJobMap);
+        log.info("增加短信发送失败重发定时任务 end");
+
+        log.info("增加mq信息同步定时任务 start");
+        Map redisMqJobMap = new HashMap();
+        redisMqJobMap.computeIfAbsent("name", v -> RedisMqSyncJob.class.getName());
+        quartzService.deleteJob(JobEnum.REDIS_MQ_JOB.name(), JobEnum.REDIS_MQ_JOB_GROUP.name());
+        // 每分钟定时任务
+        quartzService.addJob(RedisMqSyncJob.class, JobEnum.REDIS_MQ_JOB.name(), JobEnum.REDIS_MQ_JOB_GROUP.name(), "0 0/1 * * * ?", redisMqJobMap);
+        log.info("增加mq信息同步定时任务 end");
+
         log.info("服务器启动时执行 end");
     }
 }