StartRunning.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.qmth.themis.task.start;
  2. import com.qmth.themis.business.constant.SpringContextHolder;
  3. import com.qmth.themis.business.constant.SystemConstant;
  4. import com.qmth.themis.business.enums.MqGroupEnum;
  5. import com.qmth.themis.business.enums.MqTagEnum;
  6. import com.qmth.themis.mq.listener.RocketMessageConsumer;
  7. import com.qmth.themis.mq.templete.impl.*;
  8. import com.qmth.themis.task.config.DictionaryConfig;
  9. import com.qmth.themis.task.enums.QuartzTaskEnum;
  10. import com.qmth.themis.task.listener.QuartzOrderlyImpl;
  11. import com.qmth.themis.task.quartz.MqActivityJob;
  12. import com.qmth.themis.task.quartz.MqJob;
  13. import com.qmth.themis.task.quartz.ObjectiveAnswerCacheLoadJob;
  14. import com.qmth.themis.task.service.QuartzService;
  15. import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.factory.annotation.Value;
  19. import org.springframework.boot.CommandLineRunner;
  20. import org.springframework.stereotype.Component;
  21. import javax.annotation.Resource;
  22. import java.util.HashMap;
  23. import java.util.Map;
  24. /**
  25. * @Description: 服务启动时初始化运行,哪个微服务模块需要则拿此模版去用
  26. * @Param:
  27. * @return:
  28. * @Author: wangliang
  29. * @Date: 2020/7/3
  30. */
  31. @Component
  32. public class StartRunning implements CommandLineRunner {
  33. private final static Logger log = LoggerFactory.getLogger(StartRunning.class);
  34. @Resource
  35. QuartzService quartzService;
  36. @Resource
  37. RocketMessageConsumer rocketMessageConsumer;
  38. @Value("${rocketmq.name-server}")
  39. String nameServer;
  40. @Resource
  41. DictionaryConfig dictionaryConfig;
  42. @SuppressWarnings({"unchecked", "rawtypes"})
  43. @Override
  44. public void run(String... args) throws Exception {
  45. log.info("服务器启动时执行 start");
  46. log.info("增加mqjob start");
  47. Map mqMap = new HashMap();
  48. mqMap.put(SystemConstant.NAME, MqJob.class.getName());
  49. quartzService.deleteJob(QuartzTaskEnum.MQ_JOB_NAME.name(), QuartzTaskEnum.MQ_JOB_GROUP_NAME.name());
  50. quartzService.addJob(MqJob.class, QuartzTaskEnum.MQ_JOB_NAME.name(), QuartzTaskEnum.MQ_JOB_GROUP_NAME.name(), "0 0/1 * * * ?", mqMap);
  51. log.info("增加mqjob end");
  52. log.info("增加mqActivityjob start");
  53. Map mqActivityMap = new HashMap();
  54. mqActivityMap.put(SystemConstant.NAME, MqActivityJob.class.getName());
  55. quartzService.deleteJob(QuartzTaskEnum.MQ_ACTIVITY_JOB_NAME.name(), QuartzTaskEnum.MQ_ACTIVITY_JOB_GROUP_NAME.name());
  56. quartzService.addJob(MqActivityJob.class, QuartzTaskEnum.MQ_ACTIVITY_JOB_NAME.name(), QuartzTaskEnum.MQ_ACTIVITY_JOB_GROUP_NAME.name(), "0 0 0 * * ?", mqActivityMap);
  57. log.info("增加mqActivityjob end");
  58. log.info("增加客观题答案缓存加载job start");
  59. Map objectiveAnswerCacheMap = new HashMap();
  60. objectiveAnswerCacheMap.put(SystemConstant.NAME, ObjectiveAnswerCacheLoadJob.class.getName());
  61. quartzService.deleteJob(QuartzTaskEnum.OBJECTIVE_ANSWER_CACHE_LOAD_JOB_NAME.name(), QuartzTaskEnum.OBJECTIVE_ANSWER_CACHE_LOAD_JOB_GROUP_NAME.name());
  62. quartzService.addJob(ObjectiveAnswerCacheLoadJob.class, QuartzTaskEnum.OBJECTIVE_ANSWER_CACHE_LOAD_JOB_NAME.name(), QuartzTaskEnum.OBJECTIVE_ANSWER_CACHE_LOAD_JOB_GROUP_NAME.name(), "0 0 1 * * ?", objectiveAnswerCacheMap);
  63. log.info("增加客观题答案缓存加载job end");
  64. /**
  65. * session
  66. */
  67. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.SESSION_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.WEB.name() + "||" + MqTagEnum.WIN.name() + "||" + MqTagEnum.MAC.name() + "||" + MqTagEnum.WXAPP.name() + "||" + MqTagEnum.IOS.name() + "||" + MqTagEnum.ANDROID.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(SessionConcurrentlyImpl.class));
  68. /**
  69. * userLog
  70. */
  71. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.USER_LOG_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.USER.name() + "||" + MqTagEnum.STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(UserLogConcurrentlyImpl.class));
  72. /**
  73. * log
  74. */
  75. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.LOG_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXCEPTION_LOG.name() + "||" + MqTagEnum.MONITOR_LOG.name() + "||" + MqTagEnum.ONLINE_LOG.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LogConcurrentlyImpl.class));
  76. /**
  77. * task
  78. */
  79. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.TASK_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_STUDENT_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_EXPORT.name() + "||" + MqTagEnum.EXAM_PAPER_IMPORT.name() + "||" + MqTagEnum.EXAM_STUDENT_EXPORT.name() + "||" + MqTagEnum.MARK_RESULT_SIMPLE_EXPORT.name() + "||" + MqTagEnum.MARK_RESULT_STANDARD_EXPORT.name() + "||" + MqTagEnum.MARK_CLOUD_SCORE_PUSH.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TaskConcurrentlyImpl.class));
  80. /**
  81. * websocket mq start
  82. */
  83. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.WEBSOCKET_DELAY_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.OE_UN_NORMAL.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebsocketUnNormalConcurrentlyImpl.class));
  84. /**
  85. * quartz mq start
  86. */
  87. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.QUARTZ_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name() + "||" + MqTagEnum.EXAM_STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(QuartzOrderlyImpl.class));
  88. //计算客观分
  89. // rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.CALCULATE_OBJECTIVE_SCORE_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateObjectiveScoreConcurrentlyImpl.class));
  90. //重新算分
  91. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.SCORE_CALCULATE_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_SCORE_CALCULATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateScoreConcurrentlyImpl.class));
  92. //人脸验证保存
  93. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.FACE_VERIFY_SAVE_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.FACE_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(FaceVerifyConcurrentlyImpl.class));
  94. //活体验证保存
  95. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.LIVENESS_VERIFY_SAVE_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LivenessVerifyConcurrentlyImpl.class));
  96. //考试记录数据更新
  97. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.EXAM_RECORD_UPDATE_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_RECORD_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordUpdateConcurrentlyImpl.class));
  98. //考试记录数据持久化
  99. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.EXAM_RECORD_PERSISTED_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordPersistedConcurrentlyImpl.class));
  100. //考试断点记录数据持久化
  101. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.EXAM_BREAK_RECORD_PERSISTED_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_BREAK_HISTORY_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordBreakHistoryPersistedConcurrentlyImpl.class));
  102. // 考生数据更新
  103. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.EXAM_STUDENT_UPDATE_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_STUDNET_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamStudentUpdateConcurrentlyImpl.class));
  104. //考试断点
  105. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.EXAM_BREAK_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_BREAK.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamBreakConcurrentlyImpl.class));
  106. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.EXAM_BREAK_DELAY_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.EXAM_BREAK_DELAY.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamBreakDelayConcurrentlyImpl.class));
  107. /**
  108. * tencent video mq start
  109. */
  110. rocketMessageConsumer.setRocketMQConsumer(nameServer, dictionaryConfig.mqConfigDomain().getMap().get(MqGroupEnum.TENCENT_VIDEO_GROUP.name()), dictionaryConfig.mqConfigDomain().getTopic(), MqTagEnum.TENCENT_VIDEO.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TencentVideoConcurrentlyImpl.class));
  111. SystemConstant.initTempFiles();
  112. SystemConstant.getSearcher(SystemConstant.TEMP_FILES_DIR);
  113. log.info("服务器启动时执行 end");
  114. }
  115. }