wangliang 4 yıl önce
ebeveyn
işleme
a6a752832a
44 değiştirilmiş dosya ile 1821 ekleme ve 280 silme
  1. BIN
      .DS_Store
  2. 399 0
      logs/themis-backend.log
  3. 611 0
      logs/themis-exam.log
  4. 385 0
      logs/themis-task.log
  5. 2 2
      themis-backend/src/main/java/com/qmth/themis/backend/api/TBExamInvigilateUserController.java
  6. 7 3
      themis-backend/src/main/java/com/qmth/themis/backend/api/TBUserController.java
  7. 1 1
      themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamActivityController.java
  8. 4 4
      themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamController.java
  9. 1 1
      themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamPaperController.java
  10. 1 1
      themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamStudentController.java
  11. 1 1
      themis-backend/src/main/java/com/qmth/themis/backend/api/TIeInvigilateCallMobileController.java
  12. 3 3
      themis-backend/src/main/java/com/qmth/themis/backend/api/TIeInvigilateController.java
  13. 18 12
      themis-backend/src/main/java/com/qmth/themis/backend/start/StartRunning.java
  14. 4 0
      themis-business/src/main/java/com/qmth/themis/business/dto/response/TEExamActivityDto.java
  15. 20 15
      themis-business/src/main/java/com/qmth/themis/business/enums/MqGroupEnum.java
  16. 5 3
      themis-business/src/main/java/com/qmth/themis/business/enums/MqTagEnum.java
  17. 1 1
      themis-business/src/main/java/com/qmth/themis/business/enums/MqTopicEnum.java
  18. 0 8
      themis-business/src/main/java/com/qmth/themis/business/service/MqDtoService.java
  19. 0 7
      themis-business/src/main/java/com/qmth/themis/business/service/TEExamStudentLogService.java
  20. 0 7
      themis-business/src/main/java/com/qmth/themis/business/service/TEUserLogService.java
  21. 1 1
      themis-business/src/main/java/com/qmth/themis/business/service/impl/CommonServiceImpl.java
  22. 0 26
      themis-business/src/main/java/com/qmth/themis/business/service/impl/MqDtoServiceImpl.java
  23. 5 5
      themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java
  24. 0 17
      themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamStudentLogServiceImpl.java
  25. 5 2
      themis-business/src/main/java/com/qmth/themis/business/service/impl/TEMobileServiceImpl.java
  26. 0 16
      themis-business/src/main/java/com/qmth/themis/business/service/impl/TEUserLogServiceImpl.java
  27. 2 2
      themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java
  28. 9 27
      themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java
  29. 1 1
      themis-exam/src/main/java/com/qmth/themis/exam/api/TEFaceController.java
  30. 1 1
      themis-exam/src/main/java/com/qmth/themis/exam/api/TELivenessController.java
  31. 23 10
      themis-exam/src/main/java/com/qmth/themis/exam/api/TEStudentController.java
  32. 4 4
      themis-exam/src/main/java/com/qmth/themis/exam/api/TIeInvigilateCallMobileController.java
  33. 4 4
      themis-exam/src/main/java/com/qmth/themis/exam/api/TIeInvigilateCallOeController.java
  34. 9 0
      themis-exam/src/main/java/com/qmth/themis/exam/listener/service/MqOeLogicService.java
  35. 43 4
      themis-exam/src/main/java/com/qmth/themis/exam/listener/service/impl/MqOeLogicServiceImpl.java
  36. 26 35
      themis-exam/src/main/java/com/qmth/themis/exam/start/StartRunning.java
  37. 44 1
      themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketMobileServer.java
  38. 1 1
      themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketOeServer.java
  39. 20 12
      themis-mq/src/main/java/com/qmth/themis/mq/service/MqLogicService.java
  40. 57 22
      themis-mq/src/main/java/com/qmth/themis/mq/service/impl/MqLogicServiceImpl.java
  41. 76 0
      themis-mq/src/main/java/com/qmth/themis/mq/templete/impl/ExamBreakConcurrentlyImpl.java
  42. 3 3
      themis-task/src/main/java/com/qmth/themis/task/enums/QuartzTaskEnum.java
  43. 3 3
      themis-task/src/main/java/com/qmth/themis/task/listener/service/impl/MqTaskLogicServiceImpl.java
  44. 21 14
      themis-task/src/main/java/com/qmth/themis/task/start/StartRunning.java

BIN
.DS_Store


Dosya farkı çok büyük olduğundan ihmal edildi
+ 399 - 0
logs/themis-backend.log


+ 611 - 0
logs/themis-exam.log

@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 2020-09-15 09:36:35.823| main | INFO |  -  | Starting ThemisExamApplication on kingdeMacBook-Air.local with PID 1274 (/Users/king/git/themis-server/themis-exam/target/classes started by king in /Users/king/git/themis-server) | [org.springframework.boot.StartupInfoLogger:55]
 2020-09-15 09:36:35.851| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
 2020-09-15 09:36:39.244| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
@@ -595,6 +596,539 @@ com.qmth.themis.common.exception.BusinessException: 该考试已结束
 	at com.qmth.themis.business.service.impl.TEExamServiceImpl$$EnhancerBySpringCGLIB$$3e13a6b0.start(<generated>)
 	at com.qmth.themis.exam.api.TEExamController.start(TEExamController.java:122)
 	at com.qmth.themis.exam.api.TEExamController$$FastClassBySpringCGLIB$$fec173f8.invoke(<generated>)
+=======
+2020-09-17 09:33:05.984| main | INFO |  -  | Starting ThemisExamApplication on kingdeMacBook-Air.local with PID 1358 (/Users/king/git/backend-service/themis-exam/target/classes started by king in /Users/king/git/backend-service) | [org.springframework.boot.StartupInfoLogger:55]
+2020-09-17 09:33:05.994| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
+2020-09-17 09:33:09.598| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
+2020-09-17 09:33:09.605| main | INFO |  -  | Bootstrapping Spring Data Redis repositories in DEFAULT mode. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]
+2020-09-17 09:33:09.660| main | INFO |  -  | Finished Spring Data repository scanning in 30ms. Found 0 Redis repository interfaces. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]
+2020-09-17 09:33:10.030| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAppMapper' and 'com.qmth.themis.business.dao.TBAppMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.031| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAttachmentMapper' and 'com.qmth.themis.business.dao.TBAttachmentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.032| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBClientVersionMapper' and 'com.qmth.themis.business.dao.TBClientVersionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.033| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBExamInvigilateUserMapper' and 'com.qmth.themis.business.dao.TBExamInvigilateUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.034| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBOrgMapper' and 'com.qmth.themis.business.dao.TBOrgMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.035| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBPrivilegeMapper' and 'com.qmth.themis.business.dao.TBPrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.035| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRoleMapper' and 'com.qmth.themis.business.dao.TBRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.036| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRolePrivilegeMapper' and 'com.qmth.themis.business.dao.TBRolePrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.036| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBSessionMapper' and 'com.qmth.themis.business.dao.TBSessionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.037| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBTaskHistoryMapper' and 'com.qmth.themis.business.dao.TBTaskHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.038| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserMapper' and 'com.qmth.themis.business.dao.TBUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.038| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserRoleMapper' and 'com.qmth.themis.business.dao.TBUserRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.038| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEConfigMapper' and 'com.qmth.themis.business.dao.TEConfigMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.040| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamActivityMapper' and 'com.qmth.themis.business.dao.TEExamActivityMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.041| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamBreachLogMapper' and 'com.qmth.themis.business.dao.TEExamBreachLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.042| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamCourseMapper' and 'com.qmth.themis.business.dao.TEExamCourseMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.042| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamMapper' and 'com.qmth.themis.business.dao.TEExamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.043| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamPaperMapper' and 'com.qmth.themis.business.dao.TEExamPaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.043| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamAuditingMapper' and 'com.qmth.themis.business.dao.TEExamReexamAuditingMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.043| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamMapper' and 'com.qmth.themis.business.dao.TEExamReexamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.044| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentLogMapper' and 'com.qmth.themis.business.dao.TEExamStudentLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.044| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentMapper' and 'com.qmth.themis.business.dao.TEExamStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.045| main | WARN |  -  | Skipping MapperFactoryBean with name 'TESimulatePaperMapper' and 'com.qmth.themis.business.dao.TESimulatePaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.045| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEStudentMapper' and 'com.qmth.themis.business.dao.TEStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.046| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEUserLogMapper' and 'com.qmth.themis.business.dao.TEUserLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.046| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallLogMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.047| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.049| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateNoticeMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateNoticeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.049| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateExceptionInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateExceptionInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.050| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateWarnInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateWarnInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.050| main | WARN |  -  | Skipping MapperFactoryBean with name 'TMRocketMessageMapper' and 'com.qmth.themis.business.dao.TMRocketMessageMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.050| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamAnswerMapper' and 'com.qmth.themis.business.dao.TOeExamAnswerMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.050| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamBreakHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamBreakHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.051| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamRecordMapper' and 'com.qmth.themis.business.dao.TOeExamRecordMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.051| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamSimulateHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamSimulateHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.051| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeFaceVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeFaceVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.051| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeLivenessVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeLivenessVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:10.052| main | WARN |  -  | No MyBatis mapper was found in '[com.qmth.themis.business.dao]' package. Please check your configuration. | [org.mybatis.logging.Logger:44]
+2020-09-17 09:33:15.018| main | INFO |  -  | Tomcat initialized with port(s): 6002 (http) | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:108]
+2020-09-17 09:33:15.047| main | INFO |  -  | Initializing ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:33:15.049| main | INFO |  -  | Starting service [Tomcat] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:33:15.050| main | INFO |  -  | Starting Servlet engine: [Apache Tomcat/9.0.35] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:33:15.406| main | INFO |  -  | Initializing Spring embedded WebApplicationContext | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:33:15.411| main | INFO |  -  | Root WebApplicationContext: initialization completed in 9145 ms | [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:284]
+2020-09-17 09:33:26.689| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:33:26.692| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:33:26.692| main | INFO |  -  | Initializing ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:33:26.701| main | INFO |  -  | Initializing ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:33:30.357| main | INFO |  -  | Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]
+2020-09-17 09:33:33.167| main | INFO |  -  | Starting ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:33:33.217| main | INFO |  -  | Tomcat started on port(s): 6002 (http) with context path '' | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220]
+2020-09-17 09:33:33.220| main | INFO |  -  | Context refreshed | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160]
+2020-09-17 09:33:33.243| main | INFO |  -  | Found 1 custom documentation plugin(s) | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163]
+2020-09-17 09:33:33.341| main | INFO |  -  | Scanning for api listing references | [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]
+2020-09-17 09:33:34.002| main | INFO |  -  | Generating unique operation named: callApplyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:33:34.014| main | INFO |  -  | Generating unique operation named: callCancelUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:33:34.029| main | INFO |  -  | Generating unique operation named: liveUrlUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:33:34.048| main | INFO |  -  | Generating unique operation named: statusUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:33:34.394| main | INFO |  -  | Generating unique operation named: verifyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:33:34.408| main | INFO |  -  | Generating unique operation named: answerSubmitUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:33:34.422| main | INFO |  -  | Generating unique operation named: fileUploadUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:33:34.504| main | INFO |  -  | Started ThemisExamApplication in 30.703 seconds (JVM running for 34.083) | [org.springframework.boot.StartupInfoLogger:61]
+2020-09-17 09:33:34.518| main | INFO |  -  | 服务器启动时执行 start | [com.qmth.themis.exam.start.StartRunning:51]
+2020-09-17 09:33:34.638| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-session,topic:themis-topic-exam,tag:WEB||WIN||MAC||WXAPP||IOS||ANDROID,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:34.762| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-userLog,topic:themis-topic-exam,tag:USER||STUDENT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:34.837| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-task,topic:themis-topic-exam,tag:EXAM_STUDENT_IMPORT||ROOM_CODE_IMPORT||ROOM_CODE_EXPORT||EXAM_PAPER_IMPORT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:34.890| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-log,topic:themis-topic-exam,tag:EXCEPTION_LOG||WARNING_LOG||MONITOR_LOG,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:34.921| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketOe,topic:themis-topic-exam,tag:OE_HARD_FINISH||OE_IM_BROADCASTING||OE_IM_CLUSTERING||OE_LIVENESS_VERIFY||OE_MONITOR_FINISH||OE_WARNING_FINISH,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:34.951| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketDelay,topic:themis-topic-exam,tag:OE_UN_NORMAL,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.014| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-calculateObjectiveScore,topic:themis-topic-exam,tag:CALCULATE_OBJECTIVE_SCORE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.065| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-faceVerifySave,topic:themis-topic-exam,tag:FACE_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.098| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-livenessVerifySave,topic:themis-topic-exam,tag:LIVENESS_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.126| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordPersisted,topic:themis-topic-exam,tag:EXAM_RECORD_PERSISTED,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.178| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordUpdate,topic:themis-topic-exam,tag:EXAM_RECORD_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.195| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordInit,topic:themis-topic-exam,tag:EXAM_RECORD_INIT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.243| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examStudentUpdate,topic:themis-topic-exam,tag:EXAM_STUDNET_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:33:35.265| main | INFO |  -  | 服务器启动时执行 end | [com.qmth.themis.exam.start.StartRunning:96]
+2020-09-17 09:34:31.677| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 09:34:31.679| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 09:34:31.697| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 09:34:31.699| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[127.0.0.1:9876] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 09:34:31.704| SpringContextShutdownHook | INFO |  -  | {dataSource-0} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
+2020-09-17 09:34:46.753| main | INFO |  -  | Starting ThemisExamApplication on kingdeMacBook-Air.local with PID 1388 (/Users/king/git/backend-service/themis-exam/target/classes started by king in /Users/king/git/backend-service) | [org.springframework.boot.StartupInfoLogger:55]
+2020-09-17 09:34:46.775| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
+2020-09-17 09:34:50.323| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
+2020-09-17 09:34:50.335| main | INFO |  -  | Bootstrapping Spring Data Redis repositories in DEFAULT mode. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]
+2020-09-17 09:34:50.387| main | INFO |  -  | Finished Spring Data repository scanning in 27ms. Found 0 Redis repository interfaces. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]
+2020-09-17 09:34:50.678| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAppMapper' and 'com.qmth.themis.business.dao.TBAppMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.679| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAttachmentMapper' and 'com.qmth.themis.business.dao.TBAttachmentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.679| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBClientVersionMapper' and 'com.qmth.themis.business.dao.TBClientVersionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.680| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBExamInvigilateUserMapper' and 'com.qmth.themis.business.dao.TBExamInvigilateUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.680| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBOrgMapper' and 'com.qmth.themis.business.dao.TBOrgMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.680| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBPrivilegeMapper' and 'com.qmth.themis.business.dao.TBPrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.680| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRoleMapper' and 'com.qmth.themis.business.dao.TBRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.681| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRolePrivilegeMapper' and 'com.qmth.themis.business.dao.TBRolePrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.681| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBSessionMapper' and 'com.qmth.themis.business.dao.TBSessionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.682| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBTaskHistoryMapper' and 'com.qmth.themis.business.dao.TBTaskHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.683| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserMapper' and 'com.qmth.themis.business.dao.TBUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.683| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserRoleMapper' and 'com.qmth.themis.business.dao.TBUserRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.684| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEConfigMapper' and 'com.qmth.themis.business.dao.TEConfigMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.684| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamActivityMapper' and 'com.qmth.themis.business.dao.TEExamActivityMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.684| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamBreachLogMapper' and 'com.qmth.themis.business.dao.TEExamBreachLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.685| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamCourseMapper' and 'com.qmth.themis.business.dao.TEExamCourseMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.685| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamMapper' and 'com.qmth.themis.business.dao.TEExamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.685| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamPaperMapper' and 'com.qmth.themis.business.dao.TEExamPaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.685| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamAuditingMapper' and 'com.qmth.themis.business.dao.TEExamReexamAuditingMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.686| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamMapper' and 'com.qmth.themis.business.dao.TEExamReexamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.686| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentLogMapper' and 'com.qmth.themis.business.dao.TEExamStudentLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.687| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentMapper' and 'com.qmth.themis.business.dao.TEExamStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.687| main | WARN |  -  | Skipping MapperFactoryBean with name 'TESimulatePaperMapper' and 'com.qmth.themis.business.dao.TESimulatePaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.687| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEStudentMapper' and 'com.qmth.themis.business.dao.TEStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.688| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEUserLogMapper' and 'com.qmth.themis.business.dao.TEUserLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.688| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallLogMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.688| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.689| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateNoticeMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateNoticeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.689| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateExceptionInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateExceptionInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.689| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateWarnInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateWarnInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.690| main | WARN |  -  | Skipping MapperFactoryBean with name 'TMRocketMessageMapper' and 'com.qmth.themis.business.dao.TMRocketMessageMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.690| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamAnswerMapper' and 'com.qmth.themis.business.dao.TOeExamAnswerMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.691| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamBreakHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamBreakHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.691| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamRecordMapper' and 'com.qmth.themis.business.dao.TOeExamRecordMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.692| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamSimulateHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamSimulateHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.693| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeFaceVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeFaceVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.694| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeLivenessVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeLivenessVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:50.695| main | WARN |  -  | No MyBatis mapper was found in '[com.qmth.themis.business.dao]' package. Please check your configuration. | [org.mybatis.logging.Logger:44]
+2020-09-17 09:34:52.841| main | INFO |  -  | Tomcat initialized with port(s): 6002 (http) | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:108]
+2020-09-17 09:34:52.861| main | INFO |  -  | Initializing ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:34:52.862| main | INFO |  -  | Starting service [Tomcat] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:34:52.863| main | INFO |  -  | Starting Servlet engine: [Apache Tomcat/9.0.35] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:34:53.071| main | INFO |  -  | Initializing Spring embedded WebApplicationContext | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:34:53.072| main | INFO |  -  | Root WebApplicationContext: initialization completed in 6015 ms | [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:284]
+2020-09-17 09:35:02.819| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:35:02.821| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:35:02.821| main | INFO |  -  | Initializing ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:35:02.827| main | INFO |  -  | Initializing ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 09:35:04.768| main | INFO |  -  | Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]
+2020-09-17 09:35:06.391| main | INFO |  -  | Starting ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 09:35:06.417| main | INFO |  -  | Tomcat started on port(s): 6002 (http) with context path '' | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220]
+2020-09-17 09:35:06.420| main | INFO |  -  | Context refreshed | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160]
+2020-09-17 09:35:06.441| main | INFO |  -  | Found 1 custom documentation plugin(s) | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163]
+2020-09-17 09:35:06.497| main | INFO |  -  | Scanning for api listing references | [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]
+2020-09-17 09:35:06.831| main | INFO |  -  | Generating unique operation named: callApplyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:35:06.840| main | INFO |  -  | Generating unique operation named: callCancelUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:35:06.849| main | INFO |  -  | Generating unique operation named: liveUrlUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:35:06.862| main | INFO |  -  | Generating unique operation named: statusUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:35:07.065| main | INFO |  -  | Generating unique operation named: verifyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:35:07.077| main | INFO |  -  | Generating unique operation named: answerSubmitUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:35:07.101| main | INFO |  -  | Generating unique operation named: fileUploadUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 09:35:07.178| main | INFO |  -  | Started ThemisExamApplication in 22.695 seconds (JVM running for 27.763) | [org.springframework.boot.StartupInfoLogger:61]
+2020-09-17 09:35:07.182| main | INFO |  -  | 服务器启动时执行 start | [com.qmth.themis.exam.start.StartRunning:51]
+2020-09-17 09:35:07.328| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-session,topic:themis-topic-exam,tag:WEB||WIN||MAC||WXAPP||IOS||ANDROID,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.372| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-userLog,topic:themis-topic-exam,tag:USER||STUDENT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.420| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-task,topic:themis-topic-exam,tag:EXAM_STUDENT_IMPORT||ROOM_CODE_IMPORT||ROOM_CODE_EXPORT||EXAM_PAPER_IMPORT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.461| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-log,topic:themis-topic-exam,tag:EXCEPTION_LOG||WARNING_LOG||MONITOR_LOG,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.513| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketOe,topic:themis-topic-exam,tag:OE_HARD_FINISH||OE_IM_BROADCASTING||OE_IM_CLUSTERING||OE_LIVENESS_VERIFY||OE_MONITOR_FINISH||OE_WARNING_FINISH,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.602| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketDelay,topic:themis-topic-exam,tag:OE_UN_NORMAL,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.660| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-calculateObjectiveScore,topic:themis-topic-exam,tag:CALCULATE_OBJECTIVE_SCORE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.712| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-faceVerifySave,topic:themis-topic-exam,tag:FACE_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.738| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-livenessVerifySave,topic:themis-topic-exam,tag:LIVENESS_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.771| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordPersisted,topic:themis-topic-exam,tag:EXAM_RECORD_PERSISTED,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.827| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordUpdate,topic:themis-topic-exam,tag:EXAM_RECORD_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.885| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordInit,topic:themis-topic-exam,tag:EXAM_RECORD_INIT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.916| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examStudentUpdate,topic:themis-topic-exam,tag:EXAM_STUDNET_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 09:35:07.936| main | INFO |  -  | 服务器启动时执行 end | [com.qmth.themis.exam.start.StartRunning:96]
+2020-09-17 10:16:12.919| SpringContextShutdownHook | DEBUG |  -  | Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4fce136b, started on Thu Sep 17 09:34:47 CST 2020 | [org.springframework.context.support.AbstractApplicationContext:1005]
+2020-09-17 10:16:12.925| SpringContextShutdownHook | DEBUG |  -  | Found key 'spring.liveBeansView.mbeanDomain' in PropertySource 'systemProperties' with value of type String | [org.springframework.core.env.PropertySourcesPropertyResolver:115]
+2020-09-17 10:16:12.943| SpringContextShutdownHook | DEBUG |  -  | Stopping beans in phase 2147483647 | [org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup:369]
+2020-09-17 10:16:12.946| SpringContextShutdownHook | DEBUG |  -  | Bean 'documentationPluginsBootstrapper' completed its stop procedure | [org.springframework.context.support.DefaultLifecycleProcessor:242]
+2020-09-17 10:16:12.947| SpringContextShutdownHook | DEBUG |  -  | Bean 'webSocketHandlerMapping' completed its stop procedure | [org.springframework.context.support.DefaultLifecycleProcessor:242]
+2020-09-17 10:16:12.955| SpringContextShutdownHook | DEBUG |  -  | Bean 'webServerGracefulShutdown' completed its stop procedure | [org.springframework.context.support.DefaultLifecycleProcessor:242]
+2020-09-17 10:16:12.955| SpringContextShutdownHook | DEBUG |  -  | Stopping beans in phase 2147483646 | [org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup:369]
+2020-09-17 10:16:13.027| SpringContextShutdownHook | DEBUG |  -  | Bean 'webServerStartStop' completed its stop procedure | [org.springframework.context.support.DefaultLifecycleProcessor:242]
+2020-09-17 10:16:13.029| SpringContextShutdownHook | DEBUG |  -  | Stopped RedisMessageListenerContainer | [org.springframework.data.redis.listener.RedisMessageListenerContainer:229]
+2020-09-17 10:16:13.030| SpringContextShutdownHook | DEBUG |  -  | Unregistering JMX-exposed beans on shutdown | [org.springframework.jmx.export.MBeanExporter:452]
+2020-09-17 10:16:13.033| SpringContextShutdownHook | DEBUG |  -  | Unregistering JMX-exposed beans | [org.springframework.jmx.support.MBeanRegistrationSupport:186]
+2020-09-17 10:16:13.041| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 10:16:13.042| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 10:16:13.061| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 10:16:13.065| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[127.0.0.1:9876] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 10:16:13.080| SpringContextShutdownHook | INFO |  -  | {dataSource-0} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
+2020-09-17 10:16:23.937| main | INFO |  -  | Starting ThemisExamApplication on kingdeMacBook-Air.local with PID 2047 (/Users/king/git/backend-service/themis-exam/target/classes started by king in /Users/king/git/backend-service) | [org.springframework.boot.StartupInfoLogger:55]
+2020-09-17 10:16:23.944| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
+2020-09-17 10:16:28.227| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
+2020-09-17 10:16:28.233| main | INFO |  -  | Bootstrapping Spring Data Redis repositories in DEFAULT mode. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]
+2020-09-17 10:16:28.312| main | INFO |  -  | Finished Spring Data repository scanning in 44ms. Found 0 Redis repository interfaces. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]
+2020-09-17 10:16:28.875| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAppMapper' and 'com.qmth.themis.business.dao.TBAppMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.876| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAttachmentMapper' and 'com.qmth.themis.business.dao.TBAttachmentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.877| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBClientVersionMapper' and 'com.qmth.themis.business.dao.TBClientVersionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.879| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBExamInvigilateUserMapper' and 'com.qmth.themis.business.dao.TBExamInvigilateUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.879| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBOrgMapper' and 'com.qmth.themis.business.dao.TBOrgMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.880| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBPrivilegeMapper' and 'com.qmth.themis.business.dao.TBPrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.880| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRoleMapper' and 'com.qmth.themis.business.dao.TBRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.881| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRolePrivilegeMapper' and 'com.qmth.themis.business.dao.TBRolePrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.881| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBSessionMapper' and 'com.qmth.themis.business.dao.TBSessionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.881| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBTaskHistoryMapper' and 'com.qmth.themis.business.dao.TBTaskHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.882| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserMapper' and 'com.qmth.themis.business.dao.TBUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.882| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserRoleMapper' and 'com.qmth.themis.business.dao.TBUserRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.882| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEConfigMapper' and 'com.qmth.themis.business.dao.TEConfigMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.883| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamActivityMapper' and 'com.qmth.themis.business.dao.TEExamActivityMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.883| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamBreachLogMapper' and 'com.qmth.themis.business.dao.TEExamBreachLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.883| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamCourseMapper' and 'com.qmth.themis.business.dao.TEExamCourseMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.884| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamMapper' and 'com.qmth.themis.business.dao.TEExamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.884| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamPaperMapper' and 'com.qmth.themis.business.dao.TEExamPaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.884| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamAuditingMapper' and 'com.qmth.themis.business.dao.TEExamReexamAuditingMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.885| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamMapper' and 'com.qmth.themis.business.dao.TEExamReexamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.885| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentLogMapper' and 'com.qmth.themis.business.dao.TEExamStudentLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.885| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentMapper' and 'com.qmth.themis.business.dao.TEExamStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.887| main | WARN |  -  | Skipping MapperFactoryBean with name 'TESimulatePaperMapper' and 'com.qmth.themis.business.dao.TESimulatePaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.888| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEStudentMapper' and 'com.qmth.themis.business.dao.TEStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.890| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEUserLogMapper' and 'com.qmth.themis.business.dao.TEUserLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.895| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallLogMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.896| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.898| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateNoticeMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateNoticeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.899| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateExceptionInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateExceptionInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.900| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateWarnInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateWarnInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.901| main | WARN |  -  | Skipping MapperFactoryBean with name 'TMRocketMessageMapper' and 'com.qmth.themis.business.dao.TMRocketMessageMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.902| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamAnswerMapper' and 'com.qmth.themis.business.dao.TOeExamAnswerMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.903| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamBreakHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamBreakHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.904| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamRecordMapper' and 'com.qmth.themis.business.dao.TOeExamRecordMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.904| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamSimulateHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamSimulateHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.905| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeFaceVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeFaceVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.905| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeLivenessVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeLivenessVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:28.906| main | WARN |  -  | No MyBatis mapper was found in '[com.qmth.themis.business.dao]' package. Please check your configuration. | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:32.252| main | INFO |  -  | Tomcat initialized with port(s): 6002 (http) | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:108]
+2020-09-17 10:16:32.295| main | INFO |  -  | Initializing ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:32.298| main | INFO |  -  | Starting service [Tomcat] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:32.299| main | INFO |  -  | Starting Servlet engine: [Apache Tomcat/9.0.35] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:32.521| main | INFO |  -  | Initializing Spring embedded WebApplicationContext | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:32.521| main | INFO |  -  | Root WebApplicationContext: initialization completed in 8323 ms | [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:284]
+2020-09-17 10:16:44.772| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:44.774| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:44.775| main | INFO |  -  | Initializing ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:44.784| main | INFO |  -  | Initializing ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:48.000| main | INFO |  -  | Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]
+2020-09-17 10:16:49.762| main | INFO |  -  | Starting ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:49.804| main | INFO |  -  | Tomcat started on port(s): 6002 (http) with context path '' | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220]
+2020-09-17 10:16:49.806| main | INFO |  -  | Context refreshed | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160]
+2020-09-17 10:16:49.828| main | INFO |  -  | Found 1 custom documentation plugin(s) | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163]
+2020-09-17 10:16:49.911| main | INFO |  -  | Scanning for api listing references | [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]
+2020-09-17 10:16:50.483| main | INFO |  -  | Generating unique operation named: callApplyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:16:50.500| main | INFO |  -  | Generating unique operation named: callCancelUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:16:50.510| main | INFO |  -  | Generating unique operation named: liveUrlUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:16:50.530| main | INFO |  -  | Generating unique operation named: statusUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:16:50.733| main | INFO |  -  | Generating unique operation named: verifyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:16:50.749| main | INFO |  -  | Generating unique operation named: answerSubmitUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:16:50.762| main | INFO |  -  | Generating unique operation named: fileUploadUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:16:50.832| main | INFO |  -  | Started ThemisExamApplication in 28.895 seconds (JVM running for 31.378) | [org.springframework.boot.StartupInfoLogger:61]
+2020-09-17 10:16:50.836| main | INFO |  -  | 服务器启动时执行 start | [com.qmth.themis.exam.start.StartRunning:40]
+2020-09-17 10:16:50.890| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-session,topic:themis-topic-exam,tag:WEB||WIN||MAC||WXAPP||IOS||ANDROID,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:50.996| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-userLog,topic:themis-topic-exam,tag:USER||STUDENT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.011| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-task,topic:themis-topic-exam,tag:EXAM_STUDENT_IMPORT||ROOM_CODE_IMPORT||ROOM_CODE_EXPORT||EXAM_PAPER_IMPORT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.049| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-log,topic:themis-topic-exam,tag:EXCEPTION_LOG||WARNING_LOG||MONITOR_LOG,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.077| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketOe,topic:themis-topic-exam,tag:OE_HARD_FINISH||OE_IM_BROADCASTING||OE_IM_CLUSTERING||OE_LIVENESS_VERIFY||OE_MONITOR_FINISH||OE_WARNING_FINISH,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.089| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketDelay,topic:themis-topic-exam,tag:OE_UN_NORMAL,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.128| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-calculateObjectiveScore,topic:themis-topic-exam,tag:CALCULATE_OBJECTIVE_SCORE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.190| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-faceVerifySave,topic:themis-topic-exam,tag:FACE_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.255| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-livenessVerifySave,topic:themis-topic-exam,tag:LIVENESS_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.288| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordPersisted,topic:themis-topic-exam,tag:EXAM_RECORD_PERSISTED,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.303| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordUpdate,topic:themis-topic-exam,tag:EXAM_RECORD_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.322| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordInit,topic:themis-topic-exam,tag:EXAM_RECORD_INIT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.338| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examStudentUpdate,topic:themis-topic-exam,tag:EXAM_STUDNET_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.360| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examBreak,topic:themis-topic-exam,tag:EXAM_BREAK,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:51.368| main | INFO |  -  | 服务器启动时执行 end | [com.qmth.themis.exam.start.StartRunning:88]
+2020-09-17 10:42:27.886| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 10:42:27.935| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 10:42:27.979| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[127.0.0.1:9876] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 10:42:27.981| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 10:42:27.989| SpringContextShutdownHook | INFO |  -  | {dataSource-0} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
+2020-09-17 10:42:43.327| main | INFO |  -  | Starting ThemisExamApplication on kingdeMacBook-Air.local with PID 2368 (/Users/king/git/backend-service/themis-exam/target/classes started by king in /Users/king/git/backend-service) | [org.springframework.boot.StartupInfoLogger:55]
+2020-09-17 10:42:43.337| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
+2020-09-17 10:42:47.142| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
+2020-09-17 10:42:47.146| main | INFO |  -  | Bootstrapping Spring Data Redis repositories in DEFAULT mode. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]
+2020-09-17 10:42:47.201| main | INFO |  -  | Finished Spring Data repository scanning in 27ms. Found 0 Redis repository interfaces. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]
+2020-09-17 10:42:47.506| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAppMapper' and 'com.qmth.themis.business.dao.TBAppMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.506| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAttachmentMapper' and 'com.qmth.themis.business.dao.TBAttachmentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.507| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBClientVersionMapper' and 'com.qmth.themis.business.dao.TBClientVersionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.507| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBExamInvigilateUserMapper' and 'com.qmth.themis.business.dao.TBExamInvigilateUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.508| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBOrgMapper' and 'com.qmth.themis.business.dao.TBOrgMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.508| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBPrivilegeMapper' and 'com.qmth.themis.business.dao.TBPrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.508| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRoleMapper' and 'com.qmth.themis.business.dao.TBRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.509| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRolePrivilegeMapper' and 'com.qmth.themis.business.dao.TBRolePrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.509| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBSessionMapper' and 'com.qmth.themis.business.dao.TBSessionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.510| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBTaskHistoryMapper' and 'com.qmth.themis.business.dao.TBTaskHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.510| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserMapper' and 'com.qmth.themis.business.dao.TBUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.510| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserRoleMapper' and 'com.qmth.themis.business.dao.TBUserRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.511| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEConfigMapper' and 'com.qmth.themis.business.dao.TEConfigMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.511| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamActivityMapper' and 'com.qmth.themis.business.dao.TEExamActivityMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.511| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamBreachLogMapper' and 'com.qmth.themis.business.dao.TEExamBreachLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.511| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamCourseMapper' and 'com.qmth.themis.business.dao.TEExamCourseMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.512| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamMapper' and 'com.qmth.themis.business.dao.TEExamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.512| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamPaperMapper' and 'com.qmth.themis.business.dao.TEExamPaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.513| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamAuditingMapper' and 'com.qmth.themis.business.dao.TEExamReexamAuditingMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.513| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamMapper' and 'com.qmth.themis.business.dao.TEExamReexamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.513| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentLogMapper' and 'com.qmth.themis.business.dao.TEExamStudentLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.514| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentMapper' and 'com.qmth.themis.business.dao.TEExamStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.514| main | WARN |  -  | Skipping MapperFactoryBean with name 'TESimulatePaperMapper' and 'com.qmth.themis.business.dao.TESimulatePaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.515| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEStudentMapper' and 'com.qmth.themis.business.dao.TEStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.515| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEUserLogMapper' and 'com.qmth.themis.business.dao.TEUserLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.515| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallLogMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.515| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.516| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateNoticeMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateNoticeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.516| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateExceptionInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateExceptionInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.517| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateWarnInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateWarnInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.517| main | WARN |  -  | Skipping MapperFactoryBean with name 'TMRocketMessageMapper' and 'com.qmth.themis.business.dao.TMRocketMessageMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.517| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamAnswerMapper' and 'com.qmth.themis.business.dao.TOeExamAnswerMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.518| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamBreakHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamBreakHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.518| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamRecordMapper' and 'com.qmth.themis.business.dao.TOeExamRecordMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.519| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamSimulateHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamSimulateHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.520| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeFaceVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeFaceVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.520| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeLivenessVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeLivenessVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:47.521| main | WARN |  -  | No MyBatis mapper was found in '[com.qmth.themis.business.dao]' package. Please check your configuration. | [org.mybatis.logging.Logger:44]
+2020-09-17 10:42:49.449| main | INFO |  -  | Tomcat initialized with port(s): 6002 (http) | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:108]
+2020-09-17 10:42:49.465| main | INFO |  -  | Initializing ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:42:49.467| main | INFO |  -  | Starting service [Tomcat] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:42:49.468| main | INFO |  -  | Starting Servlet engine: [Apache Tomcat/9.0.35] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:42:49.621| main | INFO |  -  | Initializing Spring embedded WebApplicationContext | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:42:49.621| main | INFO |  -  | Root WebApplicationContext: initialization completed in 5971 ms | [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:284]
+2020-09-17 10:42:56.995| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:42:56.999| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:42:56.999| main | INFO |  -  | Initializing ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:42:57.018| main | INFO |  -  | Initializing ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:42:58.340| main | INFO |  -  | Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]
+2020-09-17 10:42:59.491| main | INFO |  -  | Starting ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:42:59.519| main | INFO |  -  | Tomcat started on port(s): 6002 (http) with context path '' | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220]
+2020-09-17 10:42:59.521| main | INFO |  -  | Context refreshed | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160]
+2020-09-17 10:42:59.538| main | INFO |  -  | Found 1 custom documentation plugin(s) | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163]
+2020-09-17 10:42:59.594| main | INFO |  -  | Scanning for api listing references | [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]
+2020-09-17 10:42:59.915| main | INFO |  -  | Generating unique operation named: callApplyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:42:59.923| main | INFO |  -  | Generating unique operation named: callCancelUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:42:59.930| main | INFO |  -  | Generating unique operation named: liveUrlUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:42:59.938| main | INFO |  -  | Generating unique operation named: statusUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:43:00.086| main | INFO |  -  | Generating unique operation named: verifyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:43:00.096| main | INFO |  -  | Generating unique operation named: answerSubmitUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:43:00.105| main | INFO |  -  | Generating unique operation named: fileUploadUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 10:43:00.166| main | INFO |  -  | Started ThemisExamApplication in 18.566 seconds (JVM running for 21.112) | [org.springframework.boot.StartupInfoLogger:61]
+2020-09-17 10:43:00.171| main | INFO |  -  | 服务器启动时执行 start | [com.qmth.themis.exam.start.StartRunning:40]
+2020-09-17 10:43:00.218| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-session,topic:themis-topic-exam,tag:WEB||WIN||MAC||WXAPP||IOS||ANDROID,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.236| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-userLog,topic:themis-topic-exam,tag:USER||STUDENT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.255| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-task,topic:themis-topic-exam,tag:EXAM_STUDENT_IMPORT||ROOM_CODE_IMPORT||ROOM_CODE_EXPORT||EXAM_PAPER_IMPORT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.280| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-log,topic:themis-topic-exam,tag:EXCEPTION_LOG||WARNING_LOG||MONITOR_LOG,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.311| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketOe,topic:themis-topic-exam,tag:OE_HARD_FINISH||OE_IM_BROADCASTING||OE_IM_CLUSTERING||OE_LIVENESS_VERIFY||OE_MONITOR_FINISH||OE_WARNING_FINISH,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.329| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketDelay,topic:themis-topic-exam,tag:OE_UN_NORMAL,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.355| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-calculateObjectiveScore,topic:themis-topic-exam,tag:CALCULATE_OBJECTIVE_SCORE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.375| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-faceVerifySave,topic:themis-topic-exam,tag:FACE_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.404| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-livenessVerifySave,topic:themis-topic-exam,tag:LIVENESS_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.437| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordPersisted,topic:themis-topic-exam,tag:EXAM_RECORD_PERSISTED,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.463| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordUpdate,topic:themis-topic-exam,tag:EXAM_RECORD_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.488| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordInit,topic:themis-topic-exam,tag:EXAM_RECORD_INIT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.503| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examStudentUpdate,topic:themis-topic-exam,tag:EXAM_STUDNET_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.529| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examBreak,topic:themis-topic-exam,tag:EXAM_BREAK,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:43:00.533| main | INFO |  -  | 服务器启动时执行 end | [com.qmth.themis.exam.start.StartRunning:88]
+2020-09-17 10:55:45.288| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 11:20:32.645| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 11:20:32.649| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 11:20:32.660| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[127.0.0.1:9876] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 11:20:32.662| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 11:20:32.669| SpringContextShutdownHook | INFO |  -  | {dataSource-0} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
+2020-09-17 11:21:27.744| main | INFO |  -  | Starting ThemisExamApplication on kingdeMacBook-Air.local with PID 2796 (/Users/king/git/backend-service/themis-exam/target/classes started by king in /Users/king/git/backend-service) | [org.springframework.boot.StartupInfoLogger:55]
+2020-09-17 11:21:27.901| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
+2020-09-17 11:21:34.754| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
+2020-09-17 11:21:34.759| main | INFO |  -  | Bootstrapping Spring Data Redis repositories in DEFAULT mode. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]
+2020-09-17 11:21:34.974| main | INFO |  -  | Finished Spring Data repository scanning in 135ms. Found 0 Redis repository interfaces. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]
+2020-09-17 11:21:35.899| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAppMapper' and 'com.qmth.themis.business.dao.TBAppMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.901| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAttachmentMapper' and 'com.qmth.themis.business.dao.TBAttachmentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.901| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBClientVersionMapper' and 'com.qmth.themis.business.dao.TBClientVersionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.902| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBExamInvigilateUserMapper' and 'com.qmth.themis.business.dao.TBExamInvigilateUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.902| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBOrgMapper' and 'com.qmth.themis.business.dao.TBOrgMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.903| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBPrivilegeMapper' and 'com.qmth.themis.business.dao.TBPrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.903| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRoleMapper' and 'com.qmth.themis.business.dao.TBRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.904| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRolePrivilegeMapper' and 'com.qmth.themis.business.dao.TBRolePrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.904| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBSessionMapper' and 'com.qmth.themis.business.dao.TBSessionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.904| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBTaskHistoryMapper' and 'com.qmth.themis.business.dao.TBTaskHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.905| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserMapper' and 'com.qmth.themis.business.dao.TBUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.905| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserRoleMapper' and 'com.qmth.themis.business.dao.TBUserRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.906| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEConfigMapper' and 'com.qmth.themis.business.dao.TEConfigMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.906| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamActivityMapper' and 'com.qmth.themis.business.dao.TEExamActivityMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.907| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamBreachLogMapper' and 'com.qmth.themis.business.dao.TEExamBreachLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.907| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamCourseMapper' and 'com.qmth.themis.business.dao.TEExamCourseMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.908| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamMapper' and 'com.qmth.themis.business.dao.TEExamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.908| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamPaperMapper' and 'com.qmth.themis.business.dao.TEExamPaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.909| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamAuditingMapper' and 'com.qmth.themis.business.dao.TEExamReexamAuditingMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.909| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamMapper' and 'com.qmth.themis.business.dao.TEExamReexamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.912| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentLogMapper' and 'com.qmth.themis.business.dao.TEExamStudentLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.913| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentMapper' and 'com.qmth.themis.business.dao.TEExamStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.913| main | WARN |  -  | Skipping MapperFactoryBean with name 'TESimulatePaperMapper' and 'com.qmth.themis.business.dao.TESimulatePaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.914| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEStudentMapper' and 'com.qmth.themis.business.dao.TEStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.914| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEUserLogMapper' and 'com.qmth.themis.business.dao.TEUserLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.915| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallLogMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.915| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.916| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateNoticeMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateNoticeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.916| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateExceptionInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateExceptionInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.917| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateWarnInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateWarnInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.917| main | WARN |  -  | Skipping MapperFactoryBean with name 'TMRocketMessageMapper' and 'com.qmth.themis.business.dao.TMRocketMessageMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.918| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamAnswerMapper' and 'com.qmth.themis.business.dao.TOeExamAnswerMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.924| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamBreakHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamBreakHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.928| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamRecordMapper' and 'com.qmth.themis.business.dao.TOeExamRecordMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.931| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamSimulateHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamSimulateHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.933| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeFaceVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeFaceVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.942| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeLivenessVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeLivenessVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:35.943| main | WARN |  -  | No MyBatis mapper was found in '[com.qmth.themis.business.dao]' package. Please check your configuration. | [org.mybatis.logging.Logger:44]
+2020-09-17 11:21:38.809| main | INFO |  -  | Tomcat initialized with port(s): 6002 (http) | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:108]
+2020-09-17 11:21:38.859| main | INFO |  -  | Initializing ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:21:38.861| main | INFO |  -  | Starting service [Tomcat] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:21:38.861| main | INFO |  -  | Starting Servlet engine: [Apache Tomcat/9.0.35] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:21:39.238| main | INFO |  -  | Initializing Spring embedded WebApplicationContext | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:21:39.240| main | INFO |  -  | Root WebApplicationContext: initialization completed in 10860 ms | [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:284]
+2020-09-17 11:21:52.725| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:21:52.727| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:21:52.728| main | INFO |  -  | Initializing ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:21:52.738| main | INFO |  -  | Initializing ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:21:56.640| main | INFO |  -  | Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]
+2020-09-17 11:21:58.779| main | INFO |  -  | Starting ProtocolHandler ["http-nio-6002"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:21:58.824| main | INFO |  -  | Tomcat started on port(s): 6002 (http) with context path '' | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220]
+2020-09-17 11:21:58.827| main | INFO |  -  | Context refreshed | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160]
+2020-09-17 11:21:58.853| main | INFO |  -  | Found 1 custom documentation plugin(s) | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163]
+2020-09-17 11:21:58.924| main | INFO |  -  | Scanning for api listing references | [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]
+2020-09-17 11:21:59.383| main | INFO |  -  | Generating unique operation named: callApplyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 11:21:59.403| main | INFO |  -  | Generating unique operation named: callCancelUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 11:21:59.416| main | INFO |  -  | Generating unique operation named: liveUrlUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 11:21:59.431| main | INFO |  -  | Generating unique operation named: statusUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 11:21:59.658| main | INFO |  -  | Generating unique operation named: verifyUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 11:21:59.672| main | INFO |  -  | Generating unique operation named: answerSubmitUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 11:21:59.687| main | INFO |  -  | Generating unique operation named: fileUploadUsingPOST_1 | [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]
+2020-09-17 11:21:59.751| main | INFO |  -  | Started ThemisExamApplication in 34.829 seconds (JVM running for 36.971) | [org.springframework.boot.StartupInfoLogger:61]
+2020-09-17 11:21:59.756| main | INFO |  -  | 服务器启动时执行 start | [com.qmth.themis.exam.start.StartRunning:40]
+2020-09-17 11:21:59.812| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-session,topic:themis-topic-exam,tag:WEB||WIN||MAC||WXAPP||IOS||ANDROID,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:21:59.830| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-userLog,topic:themis-topic-exam,tag:USER||STUDENT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:21:59.853| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-task,topic:themis-topic-exam,tag:EXAM_STUDENT_IMPORT||ROOM_CODE_IMPORT||ROOM_CODE_EXPORT||EXAM_PAPER_IMPORT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:21:59.899| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-log,topic:themis-topic-exam,tag:EXCEPTION_LOG||WARNING_LOG||MONITOR_LOG,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:21:59.935| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketOe,topic:themis-topic-exam,tag:OE_HARD_FINISH||OE_IM_BROADCASTING||OE_IM_CLUSTERING||OE_LIVENESS_VERIFY||OE_MONITOR_FINISH||OE_WARNING_FINISH,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:21:59.971| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketDelay,topic:themis-topic-exam,tag:OE_UN_NORMAL,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:21:59.992| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-calculateObjectiveScore,topic:themis-topic-exam,tag:CALCULATE_OBJECTIVE_SCORE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.008| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-faceVerifySave,topic:themis-topic-exam,tag:FACE_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.020| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-livenessVerifySave,topic:themis-topic-exam,tag:LIVENESS_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.043| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordPersisted,topic:themis-topic-exam,tag:EXAM_RECORD_PERSISTED,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.055| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordUpdate,topic:themis-topic-exam,tag:EXAM_RECORD_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.073| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordInit,topic:themis-topic-exam,tag:EXAM_RECORD_INIT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.085| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examStudentUpdate,topic:themis-topic-exam,tag:EXAM_STUDNET_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.108| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examBreak,topic:themis-topic-exam,tag:EXAM_BREAK,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:22:00.115| main | INFO |  -  | 服务器启动时执行 end | [com.qmth.themis.exam.start.StartRunning:88]
+2020-09-17 11:23:12.594| ConsumeMessageThread_1 | INFO |  -  | :357-:ConsumeMessageThread_1 session Consumer 重试次数:0 | [com.qmth.themis.mq.templete.impl.SessionConcurrentlyImpl:45]
+2020-09-17 11:23:12.869| ConsumeMessageThread_1 | INFO |  -  | :356-:ConsumeMessageThread_1 log Consumer重试次数:0 | [com.qmth.themis.mq.templete.impl.UserLogConcurrentlyImpl:42]
+2020-09-17 11:23:12.932| ConsumeMessageThread_1 | INFO |  -  | :356-:ConsumeMessageThread_1 log Consumer接收到的消息:{"id":"9db14a81c7074b32b766e82760b86017","topic":"themis-topic-exam","tag":"USER","timestamp":1600312992448,"body":"LOGIN","type":"USER","objId":"3","objName":"i1","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.mq.templete.impl.UserLogConcurrentlyImpl:43]
+2020-09-17 11:23:12.946| ConsumeMessageThread_1 | INFO |  -  | :357-:ConsumeMessageThread_1 session Consumer 接收到的消息:{"id":"b1e344908ea441f9b5aa033d727f7a65","topic":"themis-topic-exam","tag":"WEB","timestamp":1600312992315,"body":{"id":"3-984239618-ADMIN_WEB","identity":"3","type":"[INVIGILATE]","source":"ADMIN_WEB","platform":"WEB","deviceId":"1234567891","address":"0:0:0:0:0:0:0:1","accessToken":"lfVkInIX3NbJgOvo26aJZk6d0J5XXS3F","lastAccessTime":1600312992313,"lastAccessIp":null,"updateTime":null,"expireTime":1600399392312},"type":"WEB","objId":"3-984239618-ADMIN_WEB","objName":"i1","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.mq.templete.impl.SessionConcurrentlyImpl:47]
+2020-09-17 11:23:13.059| ConsumeMessageThread_1 | INFO |  -  | :357-:ConsumeMessageThread_1 更新db | [com.qmth.themis.mq.templete.impl.SessionConcurrentlyImpl:53]
+2020-09-17 11:23:13.063| ConsumeMessageThread_1 | INFO |  -  | :356-:ConsumeMessageThread_1 插入用户轨迹日志 | [com.qmth.themis.mq.templete.impl.UserLogConcurrentlyImpl:49]
+2020-09-17 11:23:14.680| ConsumeMessageThread_1 | INFO |  -  | {dataSource-1} inited | [com.alibaba.druid.pool.DruidDataSource:1003]
+2020-09-17 11:23:14.804| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: SELECT id,identity,type,source,platform,device_id,address,access_token,last_access_time,last_access_ip,update_time,expire_time FROM t_b_session WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:14.804| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: INSERT INTO t_e_user_log ( id, user_id, type, info, remark, create_time ) VALUES ( ?, ?, ?, ?, ?, ? )  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.049| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 3-984239618-ADMIN_WEB(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.052| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 39309833723183104(Long), 3(Long), LOGIN(String), 登录(String), 登录(String), 2020-09-17 11:23:14.802(Timestamp) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.058| ConsumeMessageThread_1 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.098| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: SELECT id,topic,tag,body,type,obj_id,obj_name,ack,sequence,properties AS prop,create_time,timestamp FROM t_m_rocket_message WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.100| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 9db14a81c7074b32b766e82760b86017(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.131| ConsumeMessageThread_1 | DEBUG |  -  | <==      Total: 0 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.136| ConsumeMessageThread_1 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.139| ConsumeMessageThread_1 | INFO |  -  | mq时间大于db时间,可以更新 | [com.qmth.themis.business.service.impl.TBSessionServiceImpl:43]
+2020-09-17 11:23:15.149| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: INSERT INTO t_m_rocket_message ( id, topic, tag, body, type, obj_id, obj_name, ack, create_time, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.153| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 9db14a81c7074b32b766e82760b86017(String), themis-topic-exam(String), USER(String), "LOGIN"(String), USER(String), 3(String), i1(String), 2(Integer), 2020-09-17 11:23:15.147(Timestamp), 1600312992448(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.156| ConsumeMessageThread_1 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.182| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: UPDATE t_b_session SET identity=?, type=?, source=?, platform=?, device_id=?, address=?, access_token=?, last_access_time=?, update_time=?, expire_time=? WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.190| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 3(String), [INVIGILATE](String), ADMIN_WEB(String), WEB(String), 1234567891(String), 0:0:0:0:0:0:0:1(String), lfVkInIX3NbJgOvo26aJZk6d0J5XXS3F(String), 2020-09-17 11:23:12.313(Timestamp), 2020-09-17 11:23:15.181(Timestamp), 2020-09-18 11:23:12.312(Timestamp), 3-984239618-ADMIN_WEB(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.193| ConsumeMessageThread_1 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.208| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: SELECT id,topic,tag,body,type,obj_id,obj_name,ack,sequence,properties AS prop,create_time,timestamp FROM t_m_rocket_message WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.209| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: b1e344908ea441f9b5aa033d727f7a65(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.217| ConsumeMessageThread_1 | DEBUG |  -  | <==      Total: 0 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.219| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: INSERT INTO t_m_rocket_message ( id, topic, tag, body, type, obj_id, obj_name, ack, create_time, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.221| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: b1e344908ea441f9b5aa033d727f7a65(String), themis-topic-exam(String), WEB(String), {"id":"3-984239618-ADMIN_WEB","identity":"3","type":"[INVIGILATE]","source":"ADMIN_WEB","platform":"WEB","deviceId":"1234567891","address":"0:0:0:0:0:0:0:1","accessToken":"lfVkInIX3NbJgOvo26aJZk6d0J5XXS3F","lastAccessTime":1.600312992313E12,"expireTime":1.600399392312E12}(String), WEB(String), 3-984239618-ADMIN_WEB(String), i1(String), 2(Integer), 2020-09-17 11:23:15.218(Timestamp), 1600312992315(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:15.224| ConsumeMessageThread_1 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:40.116| http-nio-6002-exec-2 | INFO |  -  | Initializing Spring DispatcherServlet 'dispatcherServlet' | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:23:40.119| http-nio-6002-exec-2 | INFO |  -  | Initializing Servlet 'dispatcherServlet' | [org.springframework.web.servlet.FrameworkServlet:525]
+2020-09-17 11:23:40.170| http-nio-6002-exec-2 | INFO |  -  | Completed initialization in 49 ms | [org.springframework.web.servlet.FrameworkServlet:547]
+2020-09-17 11:23:40.353| http-nio-6002-exec-2 | INFO |  -  | ============请求地址========:http://localhost:6002/api/oe/student/login | [com.qmth.themis.exam.aspect.ApiControllerAspect:53]
+2020-09-17 11:23:40.354| http-nio-6002-exec-2 | INFO |  -  | ============类=============:com.qmth.themis.exam.api.TEStudentController | [com.qmth.themis.exam.aspect.ApiControllerAspect:54]
+2020-09-17 11:23:40.354| http-nio-6002-exec-2 | INFO |  -  | ============方法===========:login | [com.qmth.themis.exam.aspect.ApiControllerAspect:55]
+2020-09-17 11:23:40.376| http-nio-6002-exec-2 | INFO |  -  | ============参数key:["mapParameter"],参数value===========:[{"identity":"42112319900101001X","password":"1jdzWuniG6UMtoa3T6uNLA==","orgId":1}] | [com.qmth.themis.exam.aspect.ApiControllerAspect:56]
+2020-09-17 11:23:40.377| http-nio-6002-exec-2 | INFO |  -  | ============platform===========:WEB | [com.qmth.themis.exam.aspect.ApiControllerAspect:57]
+2020-09-17 11:23:40.377| http-nio-6002-exec-2 | INFO |  -  | ============deviceId===========:1234567891 | [com.qmth.themis.exam.aspect.ApiControllerAspect:58]
+2020-09-17 11:23:40.378| http-nio-6002-exec-2 | INFO |  -  | ============Authorization===========:null | [com.qmth.themis.exam.aspect.ApiControllerAspect:59]
+2020-09-17 11:23:40.378| http-nio-6002-exec-2 | INFO |  -  | ============time===========:null | [com.qmth.themis.exam.aspect.ApiControllerAspect:60]
+2020-09-17 11:23:40.466| http-nio-6002-exec-2 | DEBUG |  -  | ==>  Preparing: SELECT id,org_id,identity,password,idcard_number,mobile_number,name,gender,base_photo_path,enable,create_id,create_time,update_id,update_Time FROM t_e_student WHERE (identity = ?)  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:40.479| http-nio-6002-exec-2 | DEBUG |  -  | ==> Parameters: 42112319900101001X(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:40.495| http-nio-6002-exec-2 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.554| http-nio-6002-exec-2 | DEBUG |  -  | ==>  Preparing: SELECT id,org_id,identity,password,idcard_number,mobile_number,name,gender,base_photo_path,enable,create_id,create_time,update_id,update_Time FROM t_e_student WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.557| http-nio-6002-exec-2 | DEBUG |  -  | ==> Parameters: 35013154484256768(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.564| http-nio-6002-exec-2 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.572| http-nio-6002-exec-2 | DEBUG |  -  | ==>  Preparing: SELECT id,code,name,logo,enable,enable_simulate,simulate_paper_id,access_key,access_secret,contact_name,contact_phone,enable_liveness,enable_monitor_record,create_id,create_time,update_id,update_Time FROM t_b_org WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.574| http-nio-6002-exec-2 | DEBUG |  -  | ==> Parameters: 1(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.578| http-nio-6002-exec-2 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.595| http-nio-6002-exec-2 | DEBUG |  -  | ==>  Preparing: SELECT id,role_code,privilege_id FROM t_b_role_privilege WHERE (role_code = ?)  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.598| http-nio-6002-exec-2 | DEBUG |  -  | ==> Parameters: STUDENT(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.608| http-nio-6002-exec-2 | DEBUG |  -  | <==      Total: 33 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.629| http-nio-6002-exec-2 | DEBUG |  -  | ==>  Preparing: SELECT id,name,url,type,parent_id,sequence,remark,create_time FROM t_b_privilege WHERE (id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) AND type = ?)  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.635| http-nio-6002-exec-2 | DEBUG |  -  | ==> Parameters: 64(Long), 65(Long), 66(Long), 67(Long), 68(Long), 69(Long), 70(Long), 71(Long), 72(Long), 73(Long), 137(Long), 74(Long), 138(Long), 75(Long), 76(Long), 77(Long), 78(Long), 79(Long), 80(Long), 89(Long), 90(Long), 91(Long), 92(Long), 93(Long), 94(Long), 95(Long), 114(Long), 115(Long), 116(Long), 117(Long), 60(Long), 62(Long), 63(Long), LINK(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.650| http-nio-6002-exec-2 | DEBUG |  -  | <==      Total: 32 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.705| http-nio-6002-exec-2 | INFO |  -  | sendOneWay mqDto:{"id":"e3c54f9955cc4988bf31dc43d5d02a37","topic":"themis-topic-exam","tag":"WEB","timestamp":1600313021701,"body":{"id":"42112319900101001X-1389046525-ADMIN_WEB","identity":"35013154484256768","type":"[STUDENT]","source":"ADMIN_WEB","platform":"WEB","deviceId":"1234567891","address":"0:0:0:0:0:0:0:1","accessToken":"n848tqPuyTNEDhKtPqzDuXnzBNLO0kpV","lastAccessTime":1600313021694,"lastAccessIp":null,"updateTime":null,"expireTime":1600399421694},"type":"WEB","objId":"42112319900101001X-1389046525-ADMIN_WEB","objName":"42112319900101001X","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.business.service.impl.ProducerServerImpl:167]
+2020-09-17 11:23:41.764| http-nio-6002-exec-2 | INFO |  -  | sendOneWay mqDto:{"id":"a8491ac93ec646f0b19dfb2c3e3f13b1","topic":"themis-topic-exam","tag":"STUDENT","timestamp":1600313021758,"body":"LOGIN","type":"STUDENT","objId":"35013154484256768","objName":"42112319900101001X","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.business.service.impl.ProducerServerImpl:167]
+2020-09-17 11:23:41.835| http-nio-6002-exec-2 | DEBUG |  -  | ==>  Preparing: SELECT id,org_id,code,name,tag,start_time,end_time,short_code,prepare_seconds,min_duration_seconds,pre_notice,pre_notice_stay_seconds,post_notice,exam_count,break_expire_seconds,break_resume_count,camera_photo_upload,reexam_auditing,show_objective_score,mode,enable,archived,opening_seconds,max_duration_seconds,force_finish,entry_authentication_policy,in_process_face_verify,in_process_face_stranger_ignore,in_process_liveness_verify,in_process_liveness_fixed_range,in_process_liveness_judge_policy,record_select_strategy,enable_ip_limit,ip_allow,score_status,objective_score_policy,monitor_video_source,monitor_record,progress,mobile_photo_upload,invigilate_verify,monitor_status,create_id,create_time,update_id,update_Time FROM t_e_exam WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.842| http-nio-6002-exec-2 | DEBUG |  -  | ==> Parameters: 35011729368809472(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:41.895| http-nio-6002-exec-2 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:42.106| http-nio-6002-exec-2 | DEBUG |  -  | ==>  Preparing: SELECT id,exam_id,code,prepare_seconds,max_duration_seconds,enable,opening_seconds,start_time,finish_time,create_id,create_time,update_id,update_Time FROM t_e_exam_activity WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:42.108| http-nio-6002-exec-2 | DEBUG |  -  | ==> Parameters: 35011729515610112(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:42.120| http-nio-6002-exec-2 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:23:42.141| http-nio-6002-exec-2 | ERROR |  -  | 请求出错 | [com.qmth.themis.exam.aspect.ApiControllerAspect:66]
+org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Unrecognized field "currentSerialNumber" (class com.qmth.themis.business.cache.bean.ExamStudentCacheBean), not marked as ignorable (12 known properties: "currentRecordId", "studentId", "courseCode", "examActivityId", "examId", "id", "identity", "courseName", "roomCode", "name", "roomName", "alreadyExamCount"])
+ at [Source: (byte[])"["com.qmth.themis.business.cache.bean.ExamStudentCacheBean",{"id":1302136826164891650,"examId":35011729368809472,"examActivityId":35011729515610112,"studentId":35013154484256768,"courseCode":"YW001","courseName":"大学语文","roomCode":"20200903001","roomName":"大学语文考场","alreadyExamCount":93,"currentSerialNumber":1,"currentRecordId":39028778965401600,"identity":"42112319900101001X","name":"张三123"}]"; line: 1, column: 330] (through reference chain: com.qmth.themis.business.cache.bean.ExamStudentCacheBean["currentSerialNumber"]); nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "currentSerialNumber" (class com.qmth.themis.business.cache.bean.ExamStudentCacheBean), not marked as ignorable (12 known properties: "currentRecordId", "studentId", "courseCode", "examActivityId", "examId", "id", "identity", "courseName", "roomCode", "name", "roomName", "alreadyExamCount"])
+ at [Source: (byte[])"["com.qmth.themis.business.cache.bean.ExamStudentCacheBean",{"id":1302136826164891650,"examId":35011729368809472,"examActivityId":35011729515610112,"studentId":35013154484256768,"courseCode":"YW001","courseName":"大学语文","roomCode":"20200903001","roomName":"大学语文考场","alreadyExamCount":93,"currentSerialNumber":1,"currentRecordId":39028778965401600,"identity":"42112319900101001X","name":"张三123"}]"; line: 1, column: 330] (through reference chain: com.qmth.themis.business.cache.bean.ExamStudentCacheBean["currentSerialNumber"])
+	at org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer.deserialize(Jackson2JsonRedisSerializer.java:75)
+	at org.springframework.data.redis.serializer.DefaultRedisElementReader.read(DefaultRedisElementReader.java:48)
+	at org.springframework.data.redis.serializer.RedisSerializationContext$SerializationPair.read(RedisSerializationContext.java:272)
+	at org.springframework.data.redis.cache.RedisCache.deserializeCacheValue(RedisCache.java:260)
+	at org.springframework.data.redis.cache.RedisCache.lookup(RedisCache.java:94)
+	at org.springframework.cache.support.AbstractValueAdaptingCache.get(AbstractValueAdaptingCache.java:58)
+	at org.springframework.cache.interceptor.AbstractCacheInvoker.doGet(AbstractCacheInvoker.java:73)
+	at org.springframework.cache.interceptor.CacheAspectSupport.findInCaches(CacheAspectSupport.java:554)
+	at org.springframework.cache.interceptor.CacheAspectSupport.findCachedItem(CacheAspectSupport.java:519)
+	at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:401)
+	at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:345)
+	at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:61)
+	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
+	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
+	at com.qmth.themis.business.service.impl.TEExamStudentServiceImpl$$EnhancerBySpringCGLIB$$b637c64.getExamStudentCacheBean(<generated>)
+	at com.qmth.themis.exam.api.TEStudentController.userLoginCommon(TEStudentController.java:219)
+	at com.qmth.themis.exam.api.TEStudentController.login(TEStudentController.java:143)
+	at com.qmth.themis.exam.api.TEStudentController$$FastClassBySpringCGLIB$$1800543a.invoke(<generated>)
+>>>>>>> dev
 	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
 	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
@@ -614,7 +1148,11 @@ com.qmth.themis.common.exception.BusinessException: 该考试已结束
 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
 	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
+<<<<<<< HEAD
 	at com.qmth.themis.exam.api.TEExamController$$EnhancerBySpringCGLIB$$80885de8.start(<generated>)
+=======
+	at com.qmth.themis.exam.api.TEStudentController$$EnhancerBySpringCGLIB$$7cce11c0.login(<generated>)
+>>>>>>> dev
 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
@@ -668,6 +1206,7 @@ com.qmth.themis.common.exception.BusinessException: 该考试已结束
 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 	at java.lang.Thread.run(Thread.java:748)
+<<<<<<< HEAD
 2020-09-15 16:17:14.792| http-nio-6002-exec-4 | INFO |  -  | ============请求地址========:http://localhost:6002/api/oe/student/login | [com.qmth.themis.exam.aspect.ApiControllerAspect:53]
 2020-09-15 16:17:14.806| http-nio-6002-exec-4 | INFO |  -  | ============类=============:com.qmth.themis.exam.api.TEStudentController | [com.qmth.themis.exam.aspect.ApiControllerAspect:54]
 2020-09-15 16:17:14.808| http-nio-6002-exec-4 | INFO |  -  | ============方法===========:login | [com.qmth.themis.exam.aspect.ApiControllerAspect:55]
@@ -1114,3 +1653,75 @@ java.lang.NullPointerException: null
 2020-09-15 16:28:24.475| ConsumeMessageThread_3 | DEBUG |  -  | ==>  Preparing: INSERT INTO t_m_rocket_message ( id, topic, tag, body, type, obj_id, obj_name, ack, create_time, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
 2020-09-15 16:28:24.503| ConsumeMessageThread_3 | DEBUG |  -  | ==> Parameters: 8e52e1b323ba47a688f54b9dd1c14ddc(String), themis-topic-exam(String), EXCEPTION_LOG(String), "{\"recordId\":38661774345502720,\"reason\":\"{\\\"type\\\":\\\"软件故障\\\",\\\"reason\\\":\\\"222\\\"}\"}"(String), EXCEPTION_LOG(String), 38661774345502720(String), {"type":"软件故障","reason":"222"}(String), 2(Integer), 2020-09-15 16:28:24.434(Timestamp), 1600158492348(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
 2020-09-15 16:28:24.548| ConsumeMessageThread_3 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+=======
+Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "currentSerialNumber" (class com.qmth.themis.business.cache.bean.ExamStudentCacheBean), not marked as ignorable (12 known properties: "currentRecordId", "studentId", "courseCode", "examActivityId", "examId", "id", "identity", "courseName", "roomCode", "name", "roomName", "alreadyExamCount"])
+ at [Source: (byte[])"["com.qmth.themis.business.cache.bean.ExamStudentCacheBean",{"id":1302136826164891650,"examId":35011729368809472,"examActivityId":35011729515610112,"studentId":35013154484256768,"courseCode":"YW001","courseName":"大学语文","roomCode":"20200903001","roomName":"大学语文考场","alreadyExamCount":93,"currentSerialNumber":1,"currentRecordId":39028778965401600,"identity":"42112319900101001X","name":"张三123"}]"; line: 1, column: 330] (through reference chain: com.qmth.themis.business.cache.bean.ExamStudentCacheBean["currentSerialNumber"])
+	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
+	at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:855)
+	at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1206)
+	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1592)
+	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1570)
+	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:299)
+	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:156)
+	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:120)
+	at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromAny(AsArrayTypeDeserializer.java:71)
+	at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserializeWithType(UntypedObjectDeserializer.java:710)
+	at com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:68)
+	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4482)
+	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3538)
+	at org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer.deserialize(Jackson2JsonRedisSerializer.java:73)
+	... 91 common frames omitted
+2020-09-17 11:24:12.778| http-nio-6002-exec-4 | INFO |  -  | ============请求地址========:http://localhost:6002/api/oe/student/login | [com.qmth.themis.exam.aspect.ApiControllerAspect:53]
+2020-09-17 11:24:12.784| http-nio-6002-exec-4 | INFO |  -  | ============类=============:com.qmth.themis.exam.api.TEStudentController | [com.qmth.themis.exam.aspect.ApiControllerAspect:54]
+2020-09-17 11:24:12.784| http-nio-6002-exec-4 | INFO |  -  | ============方法===========:login | [com.qmth.themis.exam.aspect.ApiControllerAspect:55]
+2020-09-17 11:24:12.785| http-nio-6002-exec-4 | INFO |  -  | ============参数key:["mapParameter"],参数value===========:[{"identity":"42112319900101001X","password":"1jdzWuniG6UMtoa3T6uNLA==","orgId":1}] | [com.qmth.themis.exam.aspect.ApiControllerAspect:56]
+2020-09-17 11:24:12.786| http-nio-6002-exec-4 | INFO |  -  | ============platform===========:WEB | [com.qmth.themis.exam.aspect.ApiControllerAspect:57]
+2020-09-17 11:24:12.786| http-nio-6002-exec-4 | INFO |  -  | ============deviceId===========:1234567891 | [com.qmth.themis.exam.aspect.ApiControllerAspect:58]
+2020-09-17 11:24:12.787| http-nio-6002-exec-4 | INFO |  -  | ============Authorization===========:null | [com.qmth.themis.exam.aspect.ApiControllerAspect:59]
+2020-09-17 11:24:12.788| http-nio-6002-exec-4 | INFO |  -  | ============time===========:null | [com.qmth.themis.exam.aspect.ApiControllerAspect:60]
+2020-09-17 11:24:12.792| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,org_id,identity,password,idcard_number,mobile_number,name,gender,base_photo_path,enable,create_id,create_time,update_id,update_Time FROM t_e_student WHERE (identity = ?)  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.803| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 42112319900101001X(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.808| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.815| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,org_id,identity,password,idcard_number,mobile_number,name,gender,base_photo_path,enable,create_id,create_time,update_id,update_Time FROM t_e_student WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.819| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 35013154484256768(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.823| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.828| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,code,name,logo,enable,enable_simulate,simulate_paper_id,access_key,access_secret,contact_name,contact_phone,enable_liveness,enable_monitor_record,create_id,create_time,update_id,update_Time FROM t_b_org WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.831| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 1(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.847| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.876| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,role_code,privilege_id FROM t_b_role_privilege WHERE (role_code = ?)  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.878| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: STUDENT(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.912| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 33 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.921| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,name,url,type,parent_id,sequence,remark,create_time FROM t_b_privilege WHERE (id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) AND type = ?)  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.934| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 64(Long), 65(Long), 66(Long), 67(Long), 68(Long), 69(Long), 70(Long), 71(Long), 72(Long), 73(Long), 137(Long), 74(Long), 138(Long), 75(Long), 76(Long), 77(Long), 78(Long), 79(Long), 80(Long), 89(Long), 90(Long), 91(Long), 92(Long), 93(Long), 94(Long), 95(Long), 114(Long), 115(Long), 116(Long), 117(Long), 60(Long), 62(Long), 63(Long), LINK(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.951| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 32 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:12.986| http-nio-6002-exec-4 | INFO |  -  | sendOneWay mqDto:{"id":"22fc53ea33a141d799398424064d3480","topic":"themis-topic-exam","tag":"WEB","timestamp":1600313052985,"body":{"id":"42112319900101001X-1389046525-ADMIN_WEB","identity":"35013154484256768","type":"[STUDENT]","source":"ADMIN_WEB","platform":"WEB","deviceId":"1234567891","address":"0:0:0:0:0:0:0:1","accessToken":"JL8wYamjwQr52Zgtat1ArNkiTTa0ctk8","lastAccessTime":1600313052985,"lastAccessIp":null,"updateTime":null,"expireTime":1600399452985},"type":"WEB","objId":"42112319900101001X-1389046525-ADMIN_WEB","objName":"42112319900101001X","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.business.service.impl.ProducerServerImpl:167]
+2020-09-17 11:24:12.994| http-nio-6002-exec-4 | INFO |  -  | sendOneWay mqDto:{"id":"91b9fd3f55f54fd383349107976ccd05","topic":"themis-topic-exam","tag":"STUDENT","timestamp":1600313052993,"body":"LOGIN","type":"STUDENT","objId":"35013154484256768","objName":"42112319900101001X","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.business.service.impl.ProducerServerImpl:167]
+2020-09-17 11:24:13.044| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: select t.* from ( select distinct tee.id, teea.id as examActivityId,tee.name, tee.mode, tee.pre_notice as preNotice, tee.pre_notice_stay_seconds as preNoticeStaySeconds, tee.post_notice as postNotice, datediff(teea.finish_time,teea.start_time) as diffSum, datediff(teea.finish_time,teea.start_time) - datediff(now(),teea.start_time) as reallyTime from t_e_exam_student tees left join t_e_exam tee on tee.id = tees.exam_id left join t_e_exam_activity teea on teea.id = tees.exam_activity_id WHERE tees.student_id = ? and tee.enable = 1 and teea.enable = 1 and tees.enable = 1 and tee.org_id = ? ) t WHERE t.reallyTime <= diffSum + 15 and t.reallyTime >= 0  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.079| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 35013154484256768(Long), 1(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.116| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.142| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: select teea.id, teea.code, tees.id as examStudentId, tees.course_code as courseCode, tees.course_name as courseName, tee.opening_seconds as openingSeconds, teea.opening_seconds as activityOpeningSeconds, UNIX_TIMESTAMP(date_sub(teea.start_time, interval IFNULL(teea.prepare_seconds, tee.prepare_seconds) second)) * 1000 as prepareTime, UNIX_TIMESTAMP(IFNULL(teea.start_time, tee.start_time)) * 1000 as minStartTime, UNIX_TIMESTAMP(date_add(teea.start_time, interval IFNULL(teea.opening_seconds, tee.opening_seconds) second)) * 1000 as maxStartTime, IF(tee.mode = 'TOGETHER' and tee.force_finish = 1, UNIX_TIMESTAMP(IFNULL(teea.finish_time , tee.end_time)) * 1000, null) as maxFinishTime, tee.monitor_video_source as monitorVideoSourceStr, tee.prepare_seconds as prepareSeconds, teea.prepare_seconds as activityPrepareSeconds, tee.min_duration_seconds as minDurationSeconds, tee.max_duration_seconds as maxDurationSeconds, teea.max_duration_seconds as activityMaxDurationSeconds, tee.exam_count as examCount, tee.force_finish as forceFinish, tee.entry_authentication_policy as entryAuthenticationPolicy, tee.in_process_face_verify as inProcessFaceVerify, tee.in_process_face_stranger_ignore as inProcessFaceStrangerIgnore, tee.in_process_liveness_verify as inProcessLivenessVerify, tee.in_process_liveness_fixed_range as inProcessLivenessFixedRangeStr, tee.in_process_liveness_judge_policy as inProcessLivenessJudgePolicy, tee.camera_photo_upload as cameraPhotoUpload, tee.mobile_photo_upload as mobilePhotoUpload, teea.start_time as startTime, teea.finish_time as finishTime, tee.id as examId from t_e_exam_student tees left join t_e_exam tee on tee.id = tees.exam_id left join t_e_exam_activity teea on teea.id = tees.exam_activity_id WHERE teea.id = ? and teea.exam_id = ? and tees.student_id = ? and tee.enable = 1 and teea.enable = 1 and tees.enable = 1  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.187| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 35011729515610112(Long), 35011729368809472(Long), 35013154484256768(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.213| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.219| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,org_id,code,name,tag,start_time,end_time,short_code,prepare_seconds,min_duration_seconds,pre_notice,pre_notice_stay_seconds,post_notice,exam_count,break_expire_seconds,break_resume_count,camera_photo_upload,reexam_auditing,show_objective_score,mode,enable,archived,opening_seconds,max_duration_seconds,force_finish,entry_authentication_policy,in_process_face_verify,in_process_face_stranger_ignore,in_process_liveness_verify,in_process_liveness_fixed_range,in_process_liveness_judge_policy,record_select_strategy,enable_ip_limit,ip_allow,score_status,objective_score_policy,monitor_video_source,monitor_record,progress,mobile_photo_upload,invigilate_verify,monitor_status,create_id,create_time,update_id,update_Time FROM t_e_exam WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.227| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 35011729368809472(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.235| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.268| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,exam_id,exam_activity_id,student_id,course_code,room_code,identity,name,parameter,already_exam_count,current_record_id,select_record_id,room_name,enable,grade,class_no,course_name,create_id,create_time,update_id,update_Time FROM t_e_exam_student WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.272| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 1302136826164891650(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.277| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.344| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: select * from t_e_exam_course t where t.exam_id=? and t.course_code =?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.352| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 35011729368809472(Long), YW001(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.363| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.370| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: select * from t_e_exam_paper t where t.exam_id=? and t.course_code=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.374| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters: 35011729368809472(Long), YW001(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.400| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 2 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.479| http-nio-6002-exec-4 | DEBUG |  -  | ==>  Preparing: SELECT id,similarity_threshold,liveness_action_count,liveness_action_retry_count,liveness_action_limit_seconds,no_face_count_error,match_face_compare_error_count,realness_count,multiple_face_count_error,total_face_compare_error_count FROM t_e_config  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.482| http-nio-6002-exec-4 | DEBUG |  -  | ==> Parameters:  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.502| http-nio-6002-exec-4 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.515| http-nio-6002-exec-4 | INFO |  -  | ============耗时============:0秒 | [com.qmth.themis.exam.aspect.ApiControllerAspect:63]
+2020-09-17 12:05:06.566| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 12:05:06.569| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 12:05:06.697| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[127.0.0.1:9876] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 12:05:06.703| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 12:05:06.728| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
+2020-09-17 12:05:06.800| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closed | [com.alibaba.druid.pool.DruidDataSource:2037]
+>>>>>>> dev

+ 385 - 0
logs/themis-task.log

@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 2020-09-14 18:57:51.750| main | INFO |  -  | Starting ThemisTaskApplication on kingdeMacBook-Air.local with PID 9361 (/Users/king/git/themis-server/themis-task/target/classes started by king in /Users/king/git/themis-server) | [org.springframework.boot.StartupInfoLogger:55]
 2020-09-14 18:57:51.760| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
 2020-09-14 18:57:57.748| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
@@ -307,6 +308,64 @@ Caused by: java.net.SocketException: Broken pipe (Write failed)
 2020-09-14 18:59:34.062| main | INFO |  -  | Using db table-based data access locking (synchronization). | [org.quartz.impl.jdbcjobstore.JobStoreSupport:672]
 2020-09-14 18:59:34.210| main | INFO |  -  | JobStoreCMT initialized. | [org.quartz.impl.jdbcjobstore.JobStoreCMT:145]
 2020-09-14 18:59:34.230| main | INFO |  -  | Scheduler meta-data: Quartz Scheduler (v2.3.2) 'ClusterQuartz' with instanceId 'kingdeMacBook-Air.local1600081137218'
+=======
+2020-09-17 10:16:43.127| main | INFO |  -  | Starting ThemisTaskApplication on kingdeMacBook-Air.local with PID 2053 (/Users/king/git/backend-service/themis-task/target/classes started by king in /Users/king/git/backend-service) | [org.springframework.boot.StartupInfoLogger:55]
+2020-09-17 10:16:43.136| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
+2020-09-17 10:16:45.963| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
+2020-09-17 10:16:45.967| main | INFO |  -  | Bootstrapping Spring Data Redis repositories in DEFAULT mode. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]
+2020-09-17 10:16:46.037| main | INFO |  -  | Finished Spring Data repository scanning in 35ms. Found 0 Redis repository interfaces. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]
+2020-09-17 10:16:46.442| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAppMapper' and 'com.qmth.themis.business.dao.TBAppMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.484| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAttachmentMapper' and 'com.qmth.themis.business.dao.TBAttachmentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.485| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBClientVersionMapper' and 'com.qmth.themis.business.dao.TBClientVersionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.485| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBExamInvigilateUserMapper' and 'com.qmth.themis.business.dao.TBExamInvigilateUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.486| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBOrgMapper' and 'com.qmth.themis.business.dao.TBOrgMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.486| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBPrivilegeMapper' and 'com.qmth.themis.business.dao.TBPrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.486| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRoleMapper' and 'com.qmth.themis.business.dao.TBRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.487| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRolePrivilegeMapper' and 'com.qmth.themis.business.dao.TBRolePrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.487| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBSessionMapper' and 'com.qmth.themis.business.dao.TBSessionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.488| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBTaskHistoryMapper' and 'com.qmth.themis.business.dao.TBTaskHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.488| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserMapper' and 'com.qmth.themis.business.dao.TBUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.488| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserRoleMapper' and 'com.qmth.themis.business.dao.TBUserRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.489| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEConfigMapper' and 'com.qmth.themis.business.dao.TEConfigMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.489| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamActivityMapper' and 'com.qmth.themis.business.dao.TEExamActivityMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.490| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamBreachLogMapper' and 'com.qmth.themis.business.dao.TEExamBreachLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.490| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamCourseMapper' and 'com.qmth.themis.business.dao.TEExamCourseMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.490| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamMapper' and 'com.qmth.themis.business.dao.TEExamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.490| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamPaperMapper' and 'com.qmth.themis.business.dao.TEExamPaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.491| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamAuditingMapper' and 'com.qmth.themis.business.dao.TEExamReexamAuditingMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.491| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamMapper' and 'com.qmth.themis.business.dao.TEExamReexamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.491| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentLogMapper' and 'com.qmth.themis.business.dao.TEExamStudentLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.492| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentMapper' and 'com.qmth.themis.business.dao.TEExamStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.492| main | WARN |  -  | Skipping MapperFactoryBean with name 'TESimulatePaperMapper' and 'com.qmth.themis.business.dao.TESimulatePaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.492| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEStudentMapper' and 'com.qmth.themis.business.dao.TEStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.493| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEUserLogMapper' and 'com.qmth.themis.business.dao.TEUserLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.493| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallLogMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.493| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.494| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateNoticeMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateNoticeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.494| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateExceptionInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateExceptionInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.494| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateWarnInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateWarnInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.495| main | WARN |  -  | Skipping MapperFactoryBean with name 'TMRocketMessageMapper' and 'com.qmth.themis.business.dao.TMRocketMessageMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.495| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamAnswerMapper' and 'com.qmth.themis.business.dao.TOeExamAnswerMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.496| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamBreakHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamBreakHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.496| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamRecordMapper' and 'com.qmth.themis.business.dao.TOeExamRecordMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.497| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamSimulateHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamSimulateHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.497| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeFaceVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeFaceVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.498| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeLivenessVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeLivenessVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:46.499| main | WARN |  -  | No MyBatis mapper was found in '[com.qmth.themis.business.dao]' package. Please check your configuration. | [org.mybatis.logging.Logger:44]
+2020-09-17 10:16:47.812| main | INFO |  -  | Tomcat initialized with port(s): 6003 (http) | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:108]
+2020-09-17 10:16:47.833| main | INFO |  -  | Initializing ProtocolHandler ["http-nio-6003"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:47.834| main | INFO |  -  | Starting service [Tomcat] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:47.835| main | INFO |  -  | Starting Servlet engine: [Apache Tomcat/9.0.35] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:48.147| main | INFO |  -  | Initializing Spring embedded WebApplicationContext | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:48.148| main | INFO |  -  | Root WebApplicationContext: initialization completed in 4670 ms | [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:284]
+2020-09-17 10:16:52.170| main | INFO |  -  | Using default implementation for ThreadExecutor | [org.quartz.impl.StdSchedulerFactory:1220]
+2020-09-17 10:16:52.245| main | INFO |  -  | Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | [org.quartz.core.SchedulerSignalerImpl:61]
+2020-09-17 10:16:52.246| main | INFO |  -  | Quartz Scheduler v.2.3.2 created. | [org.quartz.core.QuartzScheduler:229]
+2020-09-17 10:16:53.475| main | INFO |  -  | {dataSource-1} inited | [com.alibaba.druid.pool.DruidDataSource:1003]
+2020-09-17 10:16:53.483| main | INFO |  -  | Using db table-based data access locking (synchronization). | [org.quartz.impl.jdbcjobstore.JobStoreSupport:672]
+2020-09-17 10:16:53.486| main | INFO |  -  | JobStoreCMT initialized. | [org.quartz.impl.jdbcjobstore.JobStoreCMT:145]
+2020-09-17 10:16:53.488| main | INFO |  -  | Scheduler meta-data: Quartz Scheduler (v2.3.2) 'ClusterQuartz' with instanceId 'kingdeMacBook-Air.local1600309012173'
+>>>>>>> dev
   Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
   NOT STARTED.
   Currently in standby mode.
@@ -314,6 +373,7 @@ Caused by: java.net.SocketException: Broken pipe (Write failed)
   Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
   Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is clustered.
  | [org.quartz.core.QuartzScheduler:294]
+<<<<<<< HEAD
 2020-09-14 18:59:34.232| main | INFO |  -  | Quartz scheduler 'ClusterQuartz' initialized from an externally provided properties instance. | [org.quartz.impl.StdSchedulerFactory:1374]
 2020-09-14 18:59:34.233| main | INFO |  -  | Quartz scheduler version: 2.3.2 | [org.quartz.impl.StdSchedulerFactory:1378]
 2020-09-14 18:59:34.235| main | INFO |  -  | JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@48ae9e8b | [org.quartz.core.QuartzScheduler:2293]
@@ -700,3 +760,328 @@ Caused by: java.sql.SQLException: Field 'exam_id' doesn't have a default value
 2020-09-14 19:14:14.338| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600081137218 shutdown complete. | [org.quartz.core.QuartzScheduler:740]
 2020-09-14 19:14:14.363| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
 2020-09-14 19:14:14.375| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closed | [com.alibaba.druid.pool.DruidDataSource:2037]
+=======
+2020-09-17 10:16:53.489| main | INFO |  -  | Quartz scheduler 'ClusterQuartz' initialized from an externally provided properties instance. | [org.quartz.impl.StdSchedulerFactory:1374]
+2020-09-17 10:16:53.489| main | INFO |  -  | Quartz scheduler version: 2.3.2 | [org.quartz.impl.StdSchedulerFactory:1378]
+2020-09-17 10:16:53.489| main | INFO |  -  | JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@147c00aa | [org.quartz.core.QuartzScheduler:2293]
+2020-09-17 10:16:54.345| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:54.347| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:54.348| main | INFO |  -  | Initializing ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:54.355| main | INFO |  -  | Initializing ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 10:16:55.510| main | INFO |  -  | Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]
+2020-09-17 10:16:56.521| main | INFO |  -  | Starting ProtocolHandler ["http-nio-6003"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 10:16:56.550| main | INFO |  -  | Tomcat started on port(s): 6003 (http) with context path '' | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220]
+2020-09-17 10:16:56.552| main | INFO |  -  | Context refreshed | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160]
+2020-09-17 10:16:56.570| main | INFO |  -  | Found 1 custom documentation plugin(s) | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163]
+2020-09-17 10:16:56.625| main | INFO |  -  | Scanning for api listing references | [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]
+2020-09-17 10:16:56.648| main | INFO |  -  | Starting Quartz Scheduler now | [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]
+2020-09-17 10:16:56.947| main | INFO |  -  | ClusterManager: detected 1 failed or restarted instances. | [org.quartz.impl.jdbcjobstore.JobStoreSupport:3644]
+2020-09-17 10:16:56.947| main | INFO |  -  | ClusterManager: Scanning for instance "kingdeMacBook-Air.local1600251948889"'s failed in-progress jobs. | [org.quartz.impl.jdbcjobstore.JobStoreSupport:3503]
+2020-09-17 10:16:56.968| main | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600309012173 started. | [org.quartz.core.QuartzScheduler:547]
+2020-09-17 10:16:56.998| main | INFO |  -  | Started ThemisTaskApplication in 16.11 seconds (JVM running for 19.97) | [org.springframework.boot.StartupInfoLogger:61]
+2020-09-17 10:16:57.002| main | INFO |  -  | 服务器启动时执行 start | [com.qmth.themis.task.start.StartRunning:47]
+2020-09-17 10:16:57.002| QuartzScheduler_ClusterQuartz-kingdeMacBook-Air.local1600309012173_MisfireHandler | INFO |  -  | Handling 1 trigger(s) that missed their scheduled fire-time. | [org.quartz.impl.jdbcjobstore.JobStoreSupport:973]
+2020-09-17 10:16:57.002| main | INFO |  -  | 增加mqjob start | [com.qmth.themis.task.start.StartRunning:48]
+2020-09-17 10:16:57.108| main | INFO |  -  | 增加mqjob end | [com.qmth.themis.task.start.StartRunning:53]
+2020-09-17 10:16:57.146| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:16:57 CST 2020 scheduledFireTime: Thu Sep 17 10:16:57 CST 2020 previousFireTime: 'Wed Sep 16 18:28:00 CST 2020 nextFireTime: Thu Sep 17 10:18:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:16:57.215| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-session,topic:themis-topic-exam,tag:WEB||WIN||MAC||WXAPP||IOS||ANDROID,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.288| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-userLog,topic:themis-topic-exam,tag:USER||STUDENT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.339| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-task,topic:themis-topic-exam,tag:EXAM_STUDENT_IMPORT||ROOM_CODE_IMPORT||ROOM_CODE_EXPORT||EXAM_PAPER_IMPORT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.366| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:16:57 CST 2020 scheduledFireTime: Thu Sep 17 10:16:57 CST 2020 previousFireTime: 'Wed Sep 16 18:28:00 CST 2020 nextFireTime: Thu Sep 17 10:18:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:16:57.444| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-log,topic:themis-topic-exam,tag:EXCEPTION_LOG||WARNING_LOG||MONITOR_LOG,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.519| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketDelay,topic:themis-topic-exam,tag:OE_UN_NORMAL,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.541| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-quartz,topic:themis-topic-exam,tag:EXAM_ACTIVITY,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.552| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-calculateObjectiveScore,topic:themis-topic-exam,tag:CALCULATE_OBJECTIVE_SCORE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.611| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-faceVerifySave,topic:themis-topic-exam,tag:FACE_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.638| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-livenessVerifySave,topic:themis-topic-exam,tag:LIVENESS_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.674| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordPersisted,topic:themis-topic-exam,tag:EXAM_RECORD_PERSISTED,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.717| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordUpdate,topic:themis-topic-exam,tag:EXAM_RECORD_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.809| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordInit,topic:themis-topic-exam,tag:EXAM_RECORD_INIT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.838| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examStudentUpdate,topic:themis-topic-exam,tag:EXAM_STUDNET_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.862| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examBreak,topic:themis-topic-exam,tag:EXAM_BREAK,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 10:16:57.868| main | INFO |  -  | 服务器启动时执行 end | [com.qmth.themis.task.start.StartRunning:109]
+2020-09-17 10:18:00.041| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:18:00 CST 2020 scheduledFireTime: Thu Sep 17 10:18:00 CST 2020 previousFireTime: 'Thu Sep 17 10:16:57 CST 2020 nextFireTime: Thu Sep 17 10:20:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:18:00.046| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:18:00 CST 2020 scheduledFireTime: Thu Sep 17 10:18:00 CST 2020 previousFireTime: 'Thu Sep 17 10:16:57 CST 2020 nextFireTime: Thu Sep 17 10:20:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:18:00.096| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:18:00 CST 2020 scheduledFireTime: Thu Sep 17 10:18:00 CST 2020 previousFireTime: 'null nextFireTime: Thu Sep 17 10:20:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:18:00.096| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:18:00 CST 2020 scheduledFireTime: Thu Sep 17 10:18:00 CST 2020 previousFireTime: 'null nextFireTime: Thu Sep 17 10:20:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:20:00.028| ClusterQuartz_Worker-4 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:20:00 CST 2020 scheduledFireTime: Thu Sep 17 10:20:00 CST 2020 previousFireTime: 'Thu Sep 17 10:18:00 CST 2020 nextFireTime: Thu Sep 17 10:22:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:20:00.032| ClusterQuartz_Worker-4 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:20:00 CST 2020 scheduledFireTime: Thu Sep 17 10:20:00 CST 2020 previousFireTime: 'Thu Sep 17 10:18:00 CST 2020 nextFireTime: Thu Sep 17 10:22:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:20:00.061| ClusterQuartz_Worker-5 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:20:00 CST 2020 scheduledFireTime: Thu Sep 17 10:20:00 CST 2020 previousFireTime: 'Thu Sep 17 10:18:00 CST 2020 nextFireTime: Thu Sep 17 10:22:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:20:00.061| ClusterQuartz_Worker-5 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:20:00 CST 2020 scheduledFireTime: Thu Sep 17 10:20:00 CST 2020 previousFireTime: 'Thu Sep 17 10:18:00 CST 2020 nextFireTime: Thu Sep 17 10:22:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:22:00.030| ClusterQuartz_Worker-6 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:22:00 CST 2020 scheduledFireTime: Thu Sep 17 10:22:00 CST 2020 previousFireTime: 'Thu Sep 17 10:20:00 CST 2020 nextFireTime: Thu Sep 17 10:24:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:22:00.033| ClusterQuartz_Worker-6 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:22:00 CST 2020 scheduledFireTime: Thu Sep 17 10:22:00 CST 2020 previousFireTime: 'Thu Sep 17 10:20:00 CST 2020 nextFireTime: Thu Sep 17 10:24:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:22:00.059| ClusterQuartz_Worker-7 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:22:00 CST 2020 scheduledFireTime: Thu Sep 17 10:22:00 CST 2020 previousFireTime: 'Thu Sep 17 10:20:00 CST 2020 nextFireTime: Thu Sep 17 10:24:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:22:00.060| ClusterQuartz_Worker-7 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:22:00 CST 2020 scheduledFireTime: Thu Sep 17 10:22:00 CST 2020 previousFireTime: 'Thu Sep 17 10:20:00 CST 2020 nextFireTime: Thu Sep 17 10:24:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:24:00.042| ClusterQuartz_Worker-8 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:24:00 CST 2020 scheduledFireTime: Thu Sep 17 10:24:00 CST 2020 previousFireTime: 'Thu Sep 17 10:22:00 CST 2020 nextFireTime: Thu Sep 17 10:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:24:00.051| ClusterQuartz_Worker-8 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:24:00 CST 2020 scheduledFireTime: Thu Sep 17 10:24:00 CST 2020 previousFireTime: 'Thu Sep 17 10:22:00 CST 2020 nextFireTime: Thu Sep 17 10:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:24:00.085| ClusterQuartz_Worker-9 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:24:00 CST 2020 scheduledFireTime: Thu Sep 17 10:24:00 CST 2020 previousFireTime: 'Thu Sep 17 10:22:00 CST 2020 nextFireTime: Thu Sep 17 10:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:24:00.086| ClusterQuartz_Worker-9 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:24:00 CST 2020 scheduledFireTime: Thu Sep 17 10:24:00 CST 2020 previousFireTime: 'Thu Sep 17 10:22:00 CST 2020 nextFireTime: Thu Sep 17 10:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:26:00.024| ClusterQuartz_Worker-10 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:26:00 CST 2020 scheduledFireTime: Thu Sep 17 10:26:00 CST 2020 previousFireTime: 'Thu Sep 17 10:24:00 CST 2020 nextFireTime: Thu Sep 17 10:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:26:00.028| ClusterQuartz_Worker-10 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:26:00 CST 2020 scheduledFireTime: Thu Sep 17 10:26:00 CST 2020 previousFireTime: 'Thu Sep 17 10:24:00 CST 2020 nextFireTime: Thu Sep 17 10:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:26:00.061| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:26:00 CST 2020 scheduledFireTime: Thu Sep 17 10:26:00 CST 2020 previousFireTime: 'Thu Sep 17 10:24:00 CST 2020 nextFireTime: Thu Sep 17 10:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:26:00.062| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:26:00 CST 2020 scheduledFireTime: Thu Sep 17 10:26:00 CST 2020 previousFireTime: 'Thu Sep 17 10:24:00 CST 2020 nextFireTime: Thu Sep 17 10:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:28:00.027| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:28:00 CST 2020 scheduledFireTime: Thu Sep 17 10:28:00 CST 2020 previousFireTime: 'Thu Sep 17 10:26:00 CST 2020 nextFireTime: Thu Sep 17 10:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:28:00.032| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:28:00 CST 2020 scheduledFireTime: Thu Sep 17 10:28:00 CST 2020 previousFireTime: 'Thu Sep 17 10:26:00 CST 2020 nextFireTime: Thu Sep 17 10:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:28:00.069| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:28:00 CST 2020 scheduledFireTime: Thu Sep 17 10:28:00 CST 2020 previousFireTime: 'Thu Sep 17 10:26:00 CST 2020 nextFireTime: Thu Sep 17 10:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:28:00.071| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:28:00 CST 2020 scheduledFireTime: Thu Sep 17 10:28:00 CST 2020 previousFireTime: 'Thu Sep 17 10:26:00 CST 2020 nextFireTime: Thu Sep 17 10:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:30:00.018| ClusterQuartz_Worker-4 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:30:00 CST 2020 scheduledFireTime: Thu Sep 17 10:30:00 CST 2020 previousFireTime: 'Thu Sep 17 10:28:00 CST 2020 nextFireTime: Thu Sep 17 10:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:30:00.023| ClusterQuartz_Worker-4 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:30:00 CST 2020 scheduledFireTime: Thu Sep 17 10:30:00 CST 2020 previousFireTime: 'Thu Sep 17 10:28:00 CST 2020 nextFireTime: Thu Sep 17 10:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:30:00.050| ClusterQuartz_Worker-5 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:30:00 CST 2020 scheduledFireTime: Thu Sep 17 10:30:00 CST 2020 previousFireTime: 'Thu Sep 17 10:28:00 CST 2020 nextFireTime: Thu Sep 17 10:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:30:00.053| ClusterQuartz_Worker-5 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:30:00 CST 2020 scheduledFireTime: Thu Sep 17 10:30:00 CST 2020 previousFireTime: 'Thu Sep 17 10:28:00 CST 2020 nextFireTime: Thu Sep 17 10:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:32:00.024| ClusterQuartz_Worker-6 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:32:00 CST 2020 scheduledFireTime: Thu Sep 17 10:32:00 CST 2020 previousFireTime: 'Thu Sep 17 10:30:00 CST 2020 nextFireTime: Thu Sep 17 10:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:32:00.027| ClusterQuartz_Worker-6 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:32:00 CST 2020 scheduledFireTime: Thu Sep 17 10:32:00 CST 2020 previousFireTime: 'Thu Sep 17 10:30:00 CST 2020 nextFireTime: Thu Sep 17 10:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:32:00.060| ClusterQuartz_Worker-7 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:32:00 CST 2020 scheduledFireTime: Thu Sep 17 10:32:00 CST 2020 previousFireTime: 'Thu Sep 17 10:30:00 CST 2020 nextFireTime: Thu Sep 17 10:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:32:00.061| ClusterQuartz_Worker-7 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:32:00 CST 2020 scheduledFireTime: Thu Sep 17 10:32:00 CST 2020 previousFireTime: 'Thu Sep 17 10:30:00 CST 2020 nextFireTime: Thu Sep 17 10:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:34:00.019| ClusterQuartz_Worker-8 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:34:00 CST 2020 scheduledFireTime: Thu Sep 17 10:34:00 CST 2020 previousFireTime: 'Thu Sep 17 10:32:00 CST 2020 nextFireTime: Thu Sep 17 10:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:34:00.022| ClusterQuartz_Worker-8 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:34:00 CST 2020 scheduledFireTime: Thu Sep 17 10:34:00 CST 2020 previousFireTime: 'Thu Sep 17 10:32:00 CST 2020 nextFireTime: Thu Sep 17 10:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:34:00.050| ClusterQuartz_Worker-9 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:34:00 CST 2020 scheduledFireTime: Thu Sep 17 10:34:00 CST 2020 previousFireTime: 'Thu Sep 17 10:32:00 CST 2020 nextFireTime: Thu Sep 17 10:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:34:00.051| ClusterQuartz_Worker-9 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:34:00 CST 2020 scheduledFireTime: Thu Sep 17 10:34:00 CST 2020 previousFireTime: 'Thu Sep 17 10:32:00 CST 2020 nextFireTime: Thu Sep 17 10:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:36:00.022| ClusterQuartz_Worker-10 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:36:00 CST 2020 scheduledFireTime: Thu Sep 17 10:36:00 CST 2020 previousFireTime: 'Thu Sep 17 10:34:00 CST 2020 nextFireTime: Thu Sep 17 10:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:36:00.025| ClusterQuartz_Worker-10 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:36:00 CST 2020 scheduledFireTime: Thu Sep 17 10:36:00 CST 2020 previousFireTime: 'Thu Sep 17 10:34:00 CST 2020 nextFireTime: Thu Sep 17 10:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:36:00.050| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:36:00 CST 2020 scheduledFireTime: Thu Sep 17 10:36:00 CST 2020 previousFireTime: 'Thu Sep 17 10:34:00 CST 2020 nextFireTime: Thu Sep 17 10:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:36:00.051| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:36:00 CST 2020 scheduledFireTime: Thu Sep 17 10:36:00 CST 2020 previousFireTime: 'Thu Sep 17 10:34:00 CST 2020 nextFireTime: Thu Sep 17 10:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:38:00.022| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:38:00 CST 2020 scheduledFireTime: Thu Sep 17 10:38:00 CST 2020 previousFireTime: 'Thu Sep 17 10:36:00 CST 2020 nextFireTime: Thu Sep 17 10:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:38:00.025| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:38:00 CST 2020 scheduledFireTime: Thu Sep 17 10:38:00 CST 2020 previousFireTime: 'Thu Sep 17 10:36:00 CST 2020 nextFireTime: Thu Sep 17 10:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:38:00.061| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:38:00 CST 2020 scheduledFireTime: Thu Sep 17 10:38:00 CST 2020 previousFireTime: 'Thu Sep 17 10:36:00 CST 2020 nextFireTime: Thu Sep 17 10:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:38:00.062| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:38:00 CST 2020 scheduledFireTime: Thu Sep 17 10:38:00 CST 2020 previousFireTime: 'Thu Sep 17 10:36:00 CST 2020 nextFireTime: Thu Sep 17 10:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:40:00.025| ClusterQuartz_Worker-4 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:40:00 CST 2020 scheduledFireTime: Thu Sep 17 10:40:00 CST 2020 previousFireTime: 'Thu Sep 17 10:38:00 CST 2020 nextFireTime: Thu Sep 17 10:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:40:00.032| ClusterQuartz_Worker-4 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:40:00 CST 2020 scheduledFireTime: Thu Sep 17 10:40:00 CST 2020 previousFireTime: 'Thu Sep 17 10:38:00 CST 2020 nextFireTime: Thu Sep 17 10:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:40:00.051| ClusterQuartz_Worker-5 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:40:00 CST 2020 scheduledFireTime: Thu Sep 17 10:40:00 CST 2020 previousFireTime: 'Thu Sep 17 10:38:00 CST 2020 nextFireTime: Thu Sep 17 10:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:40:00.052| ClusterQuartz_Worker-5 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:40:00 CST 2020 scheduledFireTime: Thu Sep 17 10:40:00 CST 2020 previousFireTime: 'Thu Sep 17 10:38:00 CST 2020 nextFireTime: Thu Sep 17 10:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:42:00.024| ClusterQuartz_Worker-6 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:42:00 CST 2020 scheduledFireTime: Thu Sep 17 10:42:00 CST 2020 previousFireTime: 'Thu Sep 17 10:40:00 CST 2020 nextFireTime: Thu Sep 17 10:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:42:00.028| ClusterQuartz_Worker-6 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 10:42:00 CST 2020 scheduledFireTime: Thu Sep 17 10:42:00 CST 2020 previousFireTime: 'Thu Sep 17 10:40:00 CST 2020 nextFireTime: Thu Sep 17 10:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:42:00.046| ClusterQuartz_Worker-7 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:42:00 CST 2020 scheduledFireTime: Thu Sep 17 10:42:00 CST 2020 previousFireTime: 'Thu Sep 17 10:40:00 CST 2020 nextFireTime: Thu Sep 17 10:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 10:42:00.047| ClusterQuartz_Worker-7 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 10:42:00 CST 2020 scheduledFireTime: Thu Sep 17 10:42:00 CST 2020 previousFireTime: 'Thu Sep 17 10:40:00 CST 2020 nextFireTime: Thu Sep 17 10:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 10:42:15.463| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600309012173 paused. | [org.quartz.core.QuartzScheduler:585]
+2020-09-17 10:42:15.539| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 10:42:15.540| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 10:42:15.602| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[127.0.0.1:9876] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 10:42:15.609| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 10:42:15.611| SpringContextShutdownHook | INFO |  -  | Shutting down Quartz Scheduler | [org.springframework.scheduling.quartz.SchedulerFactoryBean:845]
+2020-09-17 10:42:15.613| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600309012173 shutting down. | [org.quartz.core.QuartzScheduler:666]
+2020-09-17 10:42:15.615| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600309012173 paused. | [org.quartz.core.QuartzScheduler:585]
+2020-09-17 10:42:15.628| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600309012173 shutdown complete. | [org.quartz.core.QuartzScheduler:740]
+2020-09-17 10:42:15.639| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
+2020-09-17 10:42:15.706| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closed | [com.alibaba.druid.pool.DruidDataSource:2037]
+2020-09-17 11:22:47.511| main | INFO |  -  | Starting ThemisTaskApplication on kingdeMacBook-Air.local with PID 2815 (/Users/king/git/backend-service/themis-task/target/classes started by king in /Users/king/git/backend-service) | [org.springframework.boot.StartupInfoLogger:55]
+2020-09-17 11:22:47.526| main | INFO |  -  | No active profile set, falling back to default profiles: default | [org.springframework.boot.SpringApplication:651]
+2020-09-17 11:22:51.060| main | INFO |  -  | Multiple Spring Data modules found, entering strict repository configuration mode! | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]
+2020-09-17 11:22:51.064| main | INFO |  -  | Bootstrapping Spring Data Redis repositories in DEFAULT mode. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]
+2020-09-17 11:22:51.115| main | INFO |  -  | Finished Spring Data repository scanning in 25ms. Found 0 Redis repository interfaces. | [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]
+2020-09-17 11:22:51.453| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAppMapper' and 'com.qmth.themis.business.dao.TBAppMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.454| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBAttachmentMapper' and 'com.qmth.themis.business.dao.TBAttachmentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.454| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBClientVersionMapper' and 'com.qmth.themis.business.dao.TBClientVersionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.454| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBExamInvigilateUserMapper' and 'com.qmth.themis.business.dao.TBExamInvigilateUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.455| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBOrgMapper' and 'com.qmth.themis.business.dao.TBOrgMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.455| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBPrivilegeMapper' and 'com.qmth.themis.business.dao.TBPrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.455| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRoleMapper' and 'com.qmth.themis.business.dao.TBRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.455| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBRolePrivilegeMapper' and 'com.qmth.themis.business.dao.TBRolePrivilegeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.456| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBSessionMapper' and 'com.qmth.themis.business.dao.TBSessionMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.456| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBTaskHistoryMapper' and 'com.qmth.themis.business.dao.TBTaskHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.457| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserMapper' and 'com.qmth.themis.business.dao.TBUserMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.458| main | WARN |  -  | Skipping MapperFactoryBean with name 'TBUserRoleMapper' and 'com.qmth.themis.business.dao.TBUserRoleMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.458| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEConfigMapper' and 'com.qmth.themis.business.dao.TEConfigMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.458| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamActivityMapper' and 'com.qmth.themis.business.dao.TEExamActivityMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.458| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamBreachLogMapper' and 'com.qmth.themis.business.dao.TEExamBreachLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.459| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamCourseMapper' and 'com.qmth.themis.business.dao.TEExamCourseMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.459| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamMapper' and 'com.qmth.themis.business.dao.TEExamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.460| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamPaperMapper' and 'com.qmth.themis.business.dao.TEExamPaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.460| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamAuditingMapper' and 'com.qmth.themis.business.dao.TEExamReexamAuditingMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.460| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamReexamMapper' and 'com.qmth.themis.business.dao.TEExamReexamMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.461| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentLogMapper' and 'com.qmth.themis.business.dao.TEExamStudentLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.461| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEExamStudentMapper' and 'com.qmth.themis.business.dao.TEExamStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.461| main | WARN |  -  | Skipping MapperFactoryBean with name 'TESimulatePaperMapper' and 'com.qmth.themis.business.dao.TESimulatePaperMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.462| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEStudentMapper' and 'com.qmth.themis.business.dao.TEStudentMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.462| main | WARN |  -  | Skipping MapperFactoryBean with name 'TEUserLogMapper' and 'com.qmth.themis.business.dao.TEUserLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.462| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallLogMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallLogMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.462| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateCallMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateCallMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.463| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeExamInvigilateNoticeMapper' and 'com.qmth.themis.business.dao.TIeExamInvigilateNoticeMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.463| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateExceptionInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateExceptionInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.464| main | WARN |  -  | Skipping MapperFactoryBean with name 'TIeInvigilateWarnInfoMapper' and 'com.qmth.themis.business.dao.TIeInvigilateWarnInfoMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.465| main | WARN |  -  | Skipping MapperFactoryBean with name 'TMRocketMessageMapper' and 'com.qmth.themis.business.dao.TMRocketMessageMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.466| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamAnswerMapper' and 'com.qmth.themis.business.dao.TOeExamAnswerMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.466| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamBreakHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamBreakHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.467| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamRecordMapper' and 'com.qmth.themis.business.dao.TOeExamRecordMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.467| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeExamSimulateHistoryMapper' and 'com.qmth.themis.business.dao.TOeExamSimulateHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.467| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeFaceVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeFaceVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.467| main | WARN |  -  | Skipping MapperFactoryBean with name 'TOeLivenessVerifyHistoryMapper' and 'com.qmth.themis.business.dao.TOeLivenessVerifyHistoryMapper' mapperInterface. Bean already defined with the same name! | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:51.468| main | WARN |  -  | No MyBatis mapper was found in '[com.qmth.themis.business.dao]' package. Please check your configuration. | [org.mybatis.logging.Logger:44]
+2020-09-17 11:22:52.809| main | INFO |  -  | Tomcat initialized with port(s): 6003 (http) | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:108]
+2020-09-17 11:22:52.826| main | INFO |  -  | Initializing ProtocolHandler ["http-nio-6003"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:22:52.827| main | INFO |  -  | Starting service [Tomcat] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:22:52.827| main | INFO |  -  | Starting Servlet engine: [Apache Tomcat/9.0.35] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:22:53.197| main | INFO |  -  | Initializing Spring embedded WebApplicationContext | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:22:53.199| main | INFO |  -  | Root WebApplicationContext: initialization completed in 5309 ms | [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext:284]
+2020-09-17 11:22:56.395| main | INFO |  -  | Using default implementation for ThreadExecutor | [org.quartz.impl.StdSchedulerFactory:1220]
+2020-09-17 11:22:56.433| main | INFO |  -  | Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | [org.quartz.core.SchedulerSignalerImpl:61]
+2020-09-17 11:22:56.434| main | INFO |  -  | Quartz Scheduler v.2.3.2 created. | [org.quartz.core.QuartzScheduler:229]
+2020-09-17 11:22:57.294| main | INFO |  -  | {dataSource-1} inited | [com.alibaba.druid.pool.DruidDataSource:1003]
+2020-09-17 11:22:57.301| main | INFO |  -  | Using db table-based data access locking (synchronization). | [org.quartz.impl.jdbcjobstore.JobStoreSupport:672]
+2020-09-17 11:22:57.306| main | INFO |  -  | JobStoreCMT initialized. | [org.quartz.impl.jdbcjobstore.JobStoreCMT:145]
+2020-09-17 11:22:57.307| main | INFO |  -  | Scheduler meta-data: Quartz Scheduler (v2.3.2) 'ClusterQuartz' with instanceId 'kingdeMacBook-Air.local1600312976400'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is clustered.
+ | [org.quartz.core.QuartzScheduler:294]
+2020-09-17 11:22:57.308| main | INFO |  -  | Quartz scheduler 'ClusterQuartz' initialized from an externally provided properties instance. | [org.quartz.impl.StdSchedulerFactory:1374]
+2020-09-17 11:22:57.308| main | INFO |  -  | Quartz scheduler version: 2.3.2 | [org.quartz.impl.StdSchedulerFactory:1378]
+2020-09-17 11:22:57.309| main | INFO |  -  | JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@3386ed8 | [org.quartz.core.QuartzScheduler:2293]
+2020-09-17 11:22:58.315| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:22:58.318| main | INFO |  -  | Initializing ExecutorService | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:22:58.320| main | INFO |  -  | Initializing ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:22:58.329| main | INFO |  -  | Initializing ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:181]
+2020-09-17 11:22:59.650| main | INFO |  -  | Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]
+2020-09-17 11:23:01.112| main | INFO |  -  | Starting ProtocolHandler ["http-nio-6003"] | [org.apache.juli.logging.DirectJDKLog:173]
+2020-09-17 11:23:01.160| main | INFO |  -  | Tomcat started on port(s): 6003 (http) with context path '' | [org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220]
+2020-09-17 11:23:01.162| main | INFO |  -  | Context refreshed | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160]
+2020-09-17 11:23:01.187| main | INFO |  -  | Found 1 custom documentation plugin(s) | [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163]
+2020-09-17 11:23:01.296| main | INFO |  -  | Scanning for api listing references | [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]
+2020-09-17 11:23:01.377| main | INFO |  -  | Starting Quartz Scheduler now | [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]
+2020-09-17 11:23:01.944| main | INFO |  -  | ClusterManager: detected 1 failed or restarted instances. | [org.quartz.impl.jdbcjobstore.JobStoreSupport:3644]
+2020-09-17 11:23:01.944| main | INFO |  -  | ClusterManager: Scanning for instance "kingdeMacBook-Air.local1600309012173"'s failed in-progress jobs. | [org.quartz.impl.jdbcjobstore.JobStoreSupport:3503]
+2020-09-17 11:23:01.962| main | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600312976400 started. | [org.quartz.core.QuartzScheduler:547]
+2020-09-17 11:23:01.980| QuartzScheduler_ClusterQuartz-kingdeMacBook-Air.local1600312976400_MisfireHandler | INFO |  -  | Handling 2 trigger(s) that missed their scheduled fire-time. | [org.quartz.impl.jdbcjobstore.JobStoreSupport:973]
+2020-09-17 11:23:02.047| main | INFO |  -  | Started ThemisTaskApplication in 16.76 seconds (JVM running for 19.952) | [org.springframework.boot.StartupInfoLogger:61]
+2020-09-17 11:23:02.054| main | INFO |  -  | 服务器启动时执行 start | [com.qmth.themis.task.start.StartRunning:47]
+2020-09-17 11:23:02.055| main | INFO |  -  | 增加mqjob start | [com.qmth.themis.task.start.StartRunning:48]
+2020-09-17 11:23:02.216| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:23:02 CST 2020 scheduledFireTime: Thu Sep 17 11:23:02 CST 2020 previousFireTime: 'Thu Sep 17 10:42:00 CST 2020 nextFireTime: Thu Sep 17 11:24:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:23:02.280| main | INFO |  -  | 增加mqjob end | [com.qmth.themis.task.start.StartRunning:53]
+2020-09-17 11:23:02.281| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:23:02 CST 2020 scheduledFireTime: Thu Sep 17 11:23:02 CST 2020 previousFireTime: 'Thu Sep 17 10:42:00 CST 2020 nextFireTime: Thu Sep 17 11:24:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:23:02.395| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-session,topic:themis-topic-exam,tag:WEB||WIN||MAC||WXAPP||IOS||ANDROID,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.496| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-userLog,topic:themis-topic-exam,tag:USER||STUDENT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.576| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-task,topic:themis-topic-exam,tag:EXAM_STUDENT_IMPORT||ROOM_CODE_IMPORT||ROOM_CODE_EXPORT||EXAM_PAPER_IMPORT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.614| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-log,topic:themis-topic-exam,tag:EXCEPTION_LOG||WARNING_LOG||MONITOR_LOG,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.632| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-websocketDelay,topic:themis-topic-exam,tag:OE_UN_NORMAL,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.661| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-quartz,topic:themis-topic-exam,tag:EXAM_ACTIVITY,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.710| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-calculateObjectiveScore,topic:themis-topic-exam,tag:CALCULATE_OBJECTIVE_SCORE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.766| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-faceVerifySave,topic:themis-topic-exam,tag:FACE_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.822| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-livenessVerifySave,topic:themis-topic-exam,tag:LIVENESS_VERIFY_SAVE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.870| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordPersisted,topic:themis-topic-exam,tag:EXAM_RECORD_PERSISTED,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.952| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordUpdate,topic:themis-topic-exam,tag:EXAM_RECORD_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.979| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examRecordInit,topic:themis-topic-exam,tag:EXAM_RECORD_INIT,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:02.988| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examStudentUpdate,topic:themis-topic-exam,tag:EXAM_STUDNET_UPDATE,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:03.024| main | INFO |  -  | consumer is start !!! groupName:themis-group-exam-examBreak,topic:themis-topic-exam,tag:EXAM_BREAK,namesrvAddr:127.0.0.1:9876 | [com.qmth.themis.mq.listener.RocketMessageConsumer:54]
+2020-09-17 11:23:03.029| main | INFO |  -  | 服务器启动时执行 end | [com.qmth.themis.task.start.StartRunning:109]
+2020-09-17 11:24:00.029| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:24:00 CST 2020 scheduledFireTime: Thu Sep 17 11:24:00 CST 2020 previousFireTime: 'Thu Sep 17 11:23:02 CST 2020 nextFireTime: Thu Sep 17 11:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:24:00.033| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:24:00 CST 2020 scheduledFireTime: Thu Sep 17 11:24:00 CST 2020 previousFireTime: 'Thu Sep 17 11:23:02 CST 2020 nextFireTime: Thu Sep 17 11:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:24:00.052| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:24:00 CST 2020 scheduledFireTime: Thu Sep 17 11:24:00 CST 2020 previousFireTime: 'null nextFireTime: Thu Sep 17 11:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:24:00.053| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:24:00 CST 2020 scheduledFireTime: Thu Sep 17 11:24:00 CST 2020 previousFireTime: 'null nextFireTime: Thu Sep 17 11:26:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:24:13.036| ConsumeMessageThread_1 | INFO |  -  | :335-:ConsumeMessageThread_1 session Consumer 重试次数:0 | [com.qmth.themis.mq.templete.impl.SessionConcurrentlyImpl:45]
+2020-09-17 11:24:13.418| ConsumeMessageThread_1 | INFO |  -  | :336-:ConsumeMessageThread_1 log Consumer重试次数:0 | [com.qmth.themis.mq.templete.impl.UserLogConcurrentlyImpl:42]
+2020-09-17 11:24:13.482| ConsumeMessageThread_1 | INFO |  -  | :336-:ConsumeMessageThread_1 log Consumer接收到的消息:{"id":"91b9fd3f55f54fd383349107976ccd05","topic":"themis-topic-exam","tag":"STUDENT","timestamp":1600313052993,"body":"LOGIN","type":"STUDENT","objId":"35013154484256768","objName":"42112319900101001X","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.mq.templete.impl.UserLogConcurrentlyImpl:43]
+2020-09-17 11:24:13.498| ConsumeMessageThread_1 | INFO |  -  | :335-:ConsumeMessageThread_1 session Consumer 接收到的消息:{"id":"22fc53ea33a141d799398424064d3480","topic":"themis-topic-exam","tag":"WEB","timestamp":1600313052985,"body":{"id":"42112319900101001X-1389046525-ADMIN_WEB","identity":"35013154484256768","type":"[STUDENT]","source":"ADMIN_WEB","platform":"WEB","deviceId":"1234567891","address":"0:0:0:0:0:0:0:1","accessToken":"JL8wYamjwQr52Zgtat1ArNkiTTa0ctk8","lastAccessTime":1600313052985,"lastAccessIp":null,"updateTime":null,"expireTime":1600399452985},"type":"WEB","objId":"42112319900101001X-1389046525-ADMIN_WEB","objName":"42112319900101001X","ack":0,"sequence":null,"properties":null} | [com.qmth.themis.mq.templete.impl.SessionConcurrentlyImpl:47]
+2020-09-17 11:24:13.520| ConsumeMessageThread_1 | INFO |  -  | :336-:ConsumeMessageThread_1 插入用户轨迹日志 | [com.qmth.themis.mq.templete.impl.UserLogConcurrentlyImpl:49]
+2020-09-17 11:24:13.520| ConsumeMessageThread_1 | INFO |  -  | :335-:ConsumeMessageThread_1 更新db | [com.qmth.themis.mq.templete.impl.SessionConcurrentlyImpl:53]
+2020-09-17 11:24:13.700| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: SELECT id,identity,type,source,platform,device_id,address,access_token,last_access_time,last_access_ip,update_time,expire_time FROM t_b_session WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.721| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: INSERT INTO t_e_exam_student_log ( id, student_id, type, info, remark, create_time ) VALUES ( ?, ?, ?, ?, ?, ? )  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.729| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 42112319900101001X-1389046525-ADMIN_WEB(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.735| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 39310080583139328(Long), 35013154484256768(Long), LOGIN(String), 登录(String), 登录(String), 2020-09-17 11:24:13.719(Timestamp) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.742| ConsumeMessageThread_1 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.766| ConsumeMessageThread_1 | DEBUG |  -  | <==      Total: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.825| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: SELECT id,topic,tag,body,type,obj_id,obj_name,ack,sequence,properties AS prop,create_time,timestamp FROM t_m_rocket_message WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.825| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: SELECT id,topic,tag,body,type,obj_id,obj_name,ack,sequence,properties AS prop,create_time,timestamp FROM t_m_rocket_message WHERE id=?  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.827| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 91b9fd3f55f54fd383349107976ccd05(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.827| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 22fc53ea33a141d799398424064d3480(String) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.829| ConsumeMessageThread_1 | DEBUG |  -  | <==      Total: 0 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.833| ConsumeMessageThread_1 | DEBUG |  -  | <==      Total: 0 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.842| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: INSERT INTO t_m_rocket_message ( id, topic, tag, body, type, obj_id, obj_name, ack, create_time, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.842| ConsumeMessageThread_1 | DEBUG |  -  | ==>  Preparing: INSERT INTO t_m_rocket_message ( id, topic, tag, body, type, obj_id, obj_name, ack, create_time, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )  | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.844| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 91b9fd3f55f54fd383349107976ccd05(String), themis-topic-exam(String), STUDENT(String), "LOGIN"(String), STUDENT(String), 35013154484256768(String), 42112319900101001X(String), 2(Integer), 2020-09-17 11:24:13.84(Timestamp), 1600313052993(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.846| ConsumeMessageThread_1 | DEBUG |  -  | ==> Parameters: 22fc53ea33a141d799398424064d3480(String), themis-topic-exam(String), WEB(String), {"id":"42112319900101001X-1389046525-ADMIN_WEB","identity":"35013154484256768","type":"[STUDENT]","source":"ADMIN_WEB","platform":"WEB","deviceId":"1234567891","address":"0:0:0:0:0:0:0:1","accessToken":"JL8wYamjwQr52Zgtat1ArNkiTTa0ctk8","lastAccessTime":1.600313052985E12,"expireTime":1.600399452985E12}(String), WEB(String), 42112319900101001X-1389046525-ADMIN_WEB(String), 42112319900101001X(String), 2(Integer), 2020-09-17 11:24:13.84(Timestamp), 1600313052985(Long) | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.846| ConsumeMessageThread_1 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:24:13.851| ConsumeMessageThread_1 | DEBUG |  -  | <==    Updates: 1 | [org.apache.ibatis.logging.jdbc.BaseJdbcLogger:143]
+2020-09-17 11:26:00.020| ClusterQuartz_Worker-4 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:26:00 CST 2020 scheduledFireTime: Thu Sep 17 11:26:00 CST 2020 previousFireTime: 'Thu Sep 17 11:24:00 CST 2020 nextFireTime: Thu Sep 17 11:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:26:00.023| ClusterQuartz_Worker-4 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:26:00 CST 2020 scheduledFireTime: Thu Sep 17 11:26:00 CST 2020 previousFireTime: 'Thu Sep 17 11:24:00 CST 2020 nextFireTime: Thu Sep 17 11:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:26:00.050| ClusterQuartz_Worker-5 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:26:00 CST 2020 scheduledFireTime: Thu Sep 17 11:26:00 CST 2020 previousFireTime: 'Thu Sep 17 11:24:00 CST 2020 nextFireTime: Thu Sep 17 11:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:26:00.050| ClusterQuartz_Worker-5 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:26:00 CST 2020 scheduledFireTime: Thu Sep 17 11:26:00 CST 2020 previousFireTime: 'Thu Sep 17 11:24:00 CST 2020 nextFireTime: Thu Sep 17 11:28:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:28:00.031| ClusterQuartz_Worker-6 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:28:00 CST 2020 scheduledFireTime: Thu Sep 17 11:28:00 CST 2020 previousFireTime: 'Thu Sep 17 11:26:00 CST 2020 nextFireTime: Thu Sep 17 11:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:28:00.036| ClusterQuartz_Worker-6 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:28:00 CST 2020 scheduledFireTime: Thu Sep 17 11:28:00 CST 2020 previousFireTime: 'Thu Sep 17 11:26:00 CST 2020 nextFireTime: Thu Sep 17 11:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:28:00.098| ClusterQuartz_Worker-7 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:28:00 CST 2020 scheduledFireTime: Thu Sep 17 11:28:00 CST 2020 previousFireTime: 'Thu Sep 17 11:26:00 CST 2020 nextFireTime: Thu Sep 17 11:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:28:00.099| ClusterQuartz_Worker-7 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:28:00 CST 2020 scheduledFireTime: Thu Sep 17 11:28:00 CST 2020 previousFireTime: 'Thu Sep 17 11:26:00 CST 2020 nextFireTime: Thu Sep 17 11:30:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:30:00.018| ClusterQuartz_Worker-8 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:30:00 CST 2020 scheduledFireTime: Thu Sep 17 11:30:00 CST 2020 previousFireTime: 'Thu Sep 17 11:28:00 CST 2020 nextFireTime: Thu Sep 17 11:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:30:00.023| ClusterQuartz_Worker-8 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:30:00 CST 2020 scheduledFireTime: Thu Sep 17 11:30:00 CST 2020 previousFireTime: 'Thu Sep 17 11:28:00 CST 2020 nextFireTime: Thu Sep 17 11:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:30:00.062| ClusterQuartz_Worker-9 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:30:00 CST 2020 scheduledFireTime: Thu Sep 17 11:30:00 CST 2020 previousFireTime: 'Thu Sep 17 11:28:00 CST 2020 nextFireTime: Thu Sep 17 11:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:30:00.063| ClusterQuartz_Worker-9 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:30:00 CST 2020 scheduledFireTime: Thu Sep 17 11:30:00 CST 2020 previousFireTime: 'Thu Sep 17 11:28:00 CST 2020 nextFireTime: Thu Sep 17 11:32:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:32:00.027| ClusterQuartz_Worker-10 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:32:00 CST 2020 scheduledFireTime: Thu Sep 17 11:32:00 CST 2020 previousFireTime: 'Thu Sep 17 11:30:00 CST 2020 nextFireTime: Thu Sep 17 11:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:32:00.030| ClusterQuartz_Worker-10 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:32:00 CST 2020 scheduledFireTime: Thu Sep 17 11:32:00 CST 2020 previousFireTime: 'Thu Sep 17 11:30:00 CST 2020 nextFireTime: Thu Sep 17 11:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:32:00.062| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:32:00 CST 2020 scheduledFireTime: Thu Sep 17 11:32:00 CST 2020 previousFireTime: 'Thu Sep 17 11:30:00 CST 2020 nextFireTime: Thu Sep 17 11:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:32:00.063| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:32:00 CST 2020 scheduledFireTime: Thu Sep 17 11:32:00 CST 2020 previousFireTime: 'Thu Sep 17 11:30:00 CST 2020 nextFireTime: Thu Sep 17 11:34:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:34:00.033| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:34:00 CST 2020 scheduledFireTime: Thu Sep 17 11:34:00 CST 2020 previousFireTime: 'Thu Sep 17 11:32:00 CST 2020 nextFireTime: Thu Sep 17 11:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:34:00.037| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:34:00 CST 2020 scheduledFireTime: Thu Sep 17 11:34:00 CST 2020 previousFireTime: 'Thu Sep 17 11:32:00 CST 2020 nextFireTime: Thu Sep 17 11:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:34:00.071| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:34:00 CST 2020 scheduledFireTime: Thu Sep 17 11:34:00 CST 2020 previousFireTime: 'Thu Sep 17 11:32:00 CST 2020 nextFireTime: Thu Sep 17 11:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:34:00.074| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:34:00 CST 2020 scheduledFireTime: Thu Sep 17 11:34:00 CST 2020 previousFireTime: 'Thu Sep 17 11:32:00 CST 2020 nextFireTime: Thu Sep 17 11:36:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:36:00.024| ClusterQuartz_Worker-4 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:36:00 CST 2020 scheduledFireTime: Thu Sep 17 11:36:00 CST 2020 previousFireTime: 'Thu Sep 17 11:34:00 CST 2020 nextFireTime: Thu Sep 17 11:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:36:00.028| ClusterQuartz_Worker-4 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:36:00 CST 2020 scheduledFireTime: Thu Sep 17 11:36:00 CST 2020 previousFireTime: 'Thu Sep 17 11:34:00 CST 2020 nextFireTime: Thu Sep 17 11:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:36:00.069| ClusterQuartz_Worker-5 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:36:00 CST 2020 scheduledFireTime: Thu Sep 17 11:36:00 CST 2020 previousFireTime: 'Thu Sep 17 11:34:00 CST 2020 nextFireTime: Thu Sep 17 11:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:36:00.069| ClusterQuartz_Worker-5 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:36:00 CST 2020 scheduledFireTime: Thu Sep 17 11:36:00 CST 2020 previousFireTime: 'Thu Sep 17 11:34:00 CST 2020 nextFireTime: Thu Sep 17 11:38:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:38:00.021| ClusterQuartz_Worker-6 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:38:00 CST 2020 scheduledFireTime: Thu Sep 17 11:38:00 CST 2020 previousFireTime: 'Thu Sep 17 11:36:00 CST 2020 nextFireTime: Thu Sep 17 11:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:38:00.024| ClusterQuartz_Worker-6 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:38:00 CST 2020 scheduledFireTime: Thu Sep 17 11:38:00 CST 2020 previousFireTime: 'Thu Sep 17 11:36:00 CST 2020 nextFireTime: Thu Sep 17 11:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:38:00.048| ClusterQuartz_Worker-7 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:38:00 CST 2020 scheduledFireTime: Thu Sep 17 11:38:00 CST 2020 previousFireTime: 'Thu Sep 17 11:36:00 CST 2020 nextFireTime: Thu Sep 17 11:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:38:00.049| ClusterQuartz_Worker-7 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:38:00 CST 2020 scheduledFireTime: Thu Sep 17 11:38:00 CST 2020 previousFireTime: 'Thu Sep 17 11:36:00 CST 2020 nextFireTime: Thu Sep 17 11:40:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:40:00.017| ClusterQuartz_Worker-8 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:40:00 CST 2020 scheduledFireTime: Thu Sep 17 11:40:00 CST 2020 previousFireTime: 'Thu Sep 17 11:38:00 CST 2020 nextFireTime: Thu Sep 17 11:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:40:00.020| ClusterQuartz_Worker-8 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:40:00 CST 2020 scheduledFireTime: Thu Sep 17 11:40:00 CST 2020 previousFireTime: 'Thu Sep 17 11:38:00 CST 2020 nextFireTime: Thu Sep 17 11:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:40:00.045| ClusterQuartz_Worker-9 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:40:00 CST 2020 scheduledFireTime: Thu Sep 17 11:40:00 CST 2020 previousFireTime: 'Thu Sep 17 11:38:00 CST 2020 nextFireTime: Thu Sep 17 11:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:40:00.046| ClusterQuartz_Worker-9 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:40:00 CST 2020 scheduledFireTime: Thu Sep 17 11:40:00 CST 2020 previousFireTime: 'Thu Sep 17 11:38:00 CST 2020 nextFireTime: Thu Sep 17 11:42:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:42:00.022| ClusterQuartz_Worker-10 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:42:00 CST 2020 scheduledFireTime: Thu Sep 17 11:42:00 CST 2020 previousFireTime: 'Thu Sep 17 11:40:00 CST 2020 nextFireTime: Thu Sep 17 11:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:42:00.030| ClusterQuartz_Worker-10 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:42:00 CST 2020 scheduledFireTime: Thu Sep 17 11:42:00 CST 2020 previousFireTime: 'Thu Sep 17 11:40:00 CST 2020 nextFireTime: Thu Sep 17 11:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:42:00.058| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:42:00 CST 2020 scheduledFireTime: Thu Sep 17 11:42:00 CST 2020 previousFireTime: 'Thu Sep 17 11:40:00 CST 2020 nextFireTime: Thu Sep 17 11:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:42:00.059| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:42:00 CST 2020 scheduledFireTime: Thu Sep 17 11:42:00 CST 2020 previousFireTime: 'Thu Sep 17 11:40:00 CST 2020 nextFireTime: Thu Sep 17 11:44:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:44:00.032| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:44:00 CST 2020 scheduledFireTime: Thu Sep 17 11:44:00 CST 2020 previousFireTime: 'Thu Sep 17 11:42:00 CST 2020 nextFireTime: Thu Sep 17 11:46:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:44:00.037| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:44:00 CST 2020 scheduledFireTime: Thu Sep 17 11:44:00 CST 2020 previousFireTime: 'Thu Sep 17 11:42:00 CST 2020 nextFireTime: Thu Sep 17 11:46:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:44:00.054| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:44:00 CST 2020 scheduledFireTime: Thu Sep 17 11:44:00 CST 2020 previousFireTime: 'Thu Sep 17 11:42:00 CST 2020 nextFireTime: Thu Sep 17 11:46:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:44:00.057| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:44:00 CST 2020 scheduledFireTime: Thu Sep 17 11:44:00 CST 2020 previousFireTime: 'Thu Sep 17 11:42:00 CST 2020 nextFireTime: Thu Sep 17 11:46:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:46:00.023| ClusterQuartz_Worker-4 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:46:00 CST 2020 scheduledFireTime: Thu Sep 17 11:46:00 CST 2020 previousFireTime: 'Thu Sep 17 11:44:00 CST 2020 nextFireTime: Thu Sep 17 11:48:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:46:00.028| ClusterQuartz_Worker-4 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:46:00 CST 2020 scheduledFireTime: Thu Sep 17 11:46:00 CST 2020 previousFireTime: 'Thu Sep 17 11:44:00 CST 2020 nextFireTime: Thu Sep 17 11:48:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:46:00.059| ClusterQuartz_Worker-5 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:46:00 CST 2020 scheduledFireTime: Thu Sep 17 11:46:00 CST 2020 previousFireTime: 'Thu Sep 17 11:44:00 CST 2020 nextFireTime: Thu Sep 17 11:48:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:46:00.061| ClusterQuartz_Worker-5 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:46:00 CST 2020 scheduledFireTime: Thu Sep 17 11:46:00 CST 2020 previousFireTime: 'Thu Sep 17 11:44:00 CST 2020 nextFireTime: Thu Sep 17 11:48:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:48:00.016| ClusterQuartz_Worker-6 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:48:00 CST 2020 scheduledFireTime: Thu Sep 17 11:48:00 CST 2020 previousFireTime: 'Thu Sep 17 11:46:00 CST 2020 nextFireTime: Thu Sep 17 11:50:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:48:00.018| ClusterQuartz_Worker-6 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:48:00 CST 2020 scheduledFireTime: Thu Sep 17 11:48:00 CST 2020 previousFireTime: 'Thu Sep 17 11:46:00 CST 2020 nextFireTime: Thu Sep 17 11:50:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:48:00.042| ClusterQuartz_Worker-7 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:48:00 CST 2020 scheduledFireTime: Thu Sep 17 11:48:00 CST 2020 previousFireTime: 'Thu Sep 17 11:46:00 CST 2020 nextFireTime: Thu Sep 17 11:50:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:48:00.043| ClusterQuartz_Worker-7 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:48:00 CST 2020 scheduledFireTime: Thu Sep 17 11:48:00 CST 2020 previousFireTime: 'Thu Sep 17 11:46:00 CST 2020 nextFireTime: Thu Sep 17 11:50:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:50:00.028| ClusterQuartz_Worker-8 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:50:00 CST 2020 scheduledFireTime: Thu Sep 17 11:50:00 CST 2020 previousFireTime: 'Thu Sep 17 11:48:00 CST 2020 nextFireTime: Thu Sep 17 11:52:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:50:00.041| ClusterQuartz_Worker-8 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:50:00 CST 2020 scheduledFireTime: Thu Sep 17 11:50:00 CST 2020 previousFireTime: 'Thu Sep 17 11:48:00 CST 2020 nextFireTime: Thu Sep 17 11:52:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:50:00.064| ClusterQuartz_Worker-9 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:50:00 CST 2020 scheduledFireTime: Thu Sep 17 11:50:00 CST 2020 previousFireTime: 'Thu Sep 17 11:48:00 CST 2020 nextFireTime: Thu Sep 17 11:52:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:50:00.064| ClusterQuartz_Worker-9 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:50:00 CST 2020 scheduledFireTime: Thu Sep 17 11:50:00 CST 2020 previousFireTime: 'Thu Sep 17 11:48:00 CST 2020 nextFireTime: Thu Sep 17 11:52:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:52:00.024| ClusterQuartz_Worker-10 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:52:00 CST 2020 scheduledFireTime: Thu Sep 17 11:52:00 CST 2020 previousFireTime: 'Thu Sep 17 11:50:00 CST 2020 nextFireTime: Thu Sep 17 11:54:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:52:00.027| ClusterQuartz_Worker-10 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:52:00 CST 2020 scheduledFireTime: Thu Sep 17 11:52:00 CST 2020 previousFireTime: 'Thu Sep 17 11:50:00 CST 2020 nextFireTime: Thu Sep 17 11:54:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:52:00.062| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:52:00 CST 2020 scheduledFireTime: Thu Sep 17 11:52:00 CST 2020 previousFireTime: 'Thu Sep 17 11:50:00 CST 2020 nextFireTime: Thu Sep 17 11:54:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:52:00.064| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:52:00 CST 2020 scheduledFireTime: Thu Sep 17 11:52:00 CST 2020 previousFireTime: 'Thu Sep 17 11:50:00 CST 2020 nextFireTime: Thu Sep 17 11:54:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:54:00.019| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:54:00 CST 2020 scheduledFireTime: Thu Sep 17 11:54:00 CST 2020 previousFireTime: 'Thu Sep 17 11:52:00 CST 2020 nextFireTime: Thu Sep 17 11:56:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:54:00.021| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:54:00 CST 2020 scheduledFireTime: Thu Sep 17 11:54:00 CST 2020 previousFireTime: 'Thu Sep 17 11:52:00 CST 2020 nextFireTime: Thu Sep 17 11:56:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:54:00.043| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:54:00 CST 2020 scheduledFireTime: Thu Sep 17 11:54:00 CST 2020 previousFireTime: 'Thu Sep 17 11:52:00 CST 2020 nextFireTime: Thu Sep 17 11:56:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:54:00.043| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:54:00 CST 2020 scheduledFireTime: Thu Sep 17 11:54:00 CST 2020 previousFireTime: 'Thu Sep 17 11:52:00 CST 2020 nextFireTime: Thu Sep 17 11:56:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:56:00.020| ClusterQuartz_Worker-4 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:56:00 CST 2020 scheduledFireTime: Thu Sep 17 11:56:00 CST 2020 previousFireTime: 'Thu Sep 17 11:54:00 CST 2020 nextFireTime: Thu Sep 17 11:58:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:56:00.023| ClusterQuartz_Worker-4 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:56:00 CST 2020 scheduledFireTime: Thu Sep 17 11:56:00 CST 2020 previousFireTime: 'Thu Sep 17 11:54:00 CST 2020 nextFireTime: Thu Sep 17 11:58:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:56:00.042| ClusterQuartz_Worker-5 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:56:00 CST 2020 scheduledFireTime: Thu Sep 17 11:56:00 CST 2020 previousFireTime: 'Thu Sep 17 11:54:00 CST 2020 nextFireTime: Thu Sep 17 11:58:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:56:00.043| ClusterQuartz_Worker-5 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:56:00 CST 2020 scheduledFireTime: Thu Sep 17 11:56:00 CST 2020 previousFireTime: 'Thu Sep 17 11:54:00 CST 2020 nextFireTime: Thu Sep 17 11:58:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:58:00.017| ClusterQuartz_Worker-6 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:58:00 CST 2020 scheduledFireTime: Thu Sep 17 11:58:00 CST 2020 previousFireTime: 'Thu Sep 17 11:56:00 CST 2020 nextFireTime: Thu Sep 17 12:00:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:58:00.020| ClusterQuartz_Worker-6 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 11:58:00 CST 2020 scheduledFireTime: Thu Sep 17 11:58:00 CST 2020 previousFireTime: 'Thu Sep 17 11:56:00 CST 2020 nextFireTime: Thu Sep 17 12:00:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 11:58:00.035| ClusterQuartz_Worker-7 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:58:00 CST 2020 scheduledFireTime: Thu Sep 17 11:58:00 CST 2020 previousFireTime: 'Thu Sep 17 11:56:00 CST 2020 nextFireTime: Thu Sep 17 12:00:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 11:58:00.036| ClusterQuartz_Worker-7 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 11:58:00 CST 2020 scheduledFireTime: Thu Sep 17 11:58:00 CST 2020 previousFireTime: 'Thu Sep 17 11:56:00 CST 2020 nextFireTime: Thu Sep 17 12:00:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 12:00:00.015| ClusterQuartz_Worker-8 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 12:00:00 CST 2020 scheduledFireTime: Thu Sep 17 12:00:00 CST 2020 previousFireTime: 'Thu Sep 17 11:58:00 CST 2020 nextFireTime: Thu Sep 17 12:02:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 12:00:00.021| ClusterQuartz_Worker-8 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 12:00:00 CST 2020 scheduledFireTime: Thu Sep 17 12:00:00 CST 2020 previousFireTime: 'Thu Sep 17 11:58:00 CST 2020 nextFireTime: Thu Sep 17 12:02:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 12:00:00.043| ClusterQuartz_Worker-9 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 12:00:00 CST 2020 scheduledFireTime: Thu Sep 17 12:00:00 CST 2020 previousFireTime: 'Thu Sep 17 11:58:00 CST 2020 nextFireTime: Thu Sep 17 12:02:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 12:00:00.045| ClusterQuartz_Worker-9 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 12:00:00 CST 2020 scheduledFireTime: Thu Sep 17 12:00:00 CST 2020 previousFireTime: 'Thu Sep 17 11:58:00 CST 2020 nextFireTime: Thu Sep 17 12:02:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 12:02:00.026| ClusterQuartz_Worker-10 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 12:02:00 CST 2020 scheduledFireTime: Thu Sep 17 12:02:00 CST 2020 previousFireTime: 'Thu Sep 17 12:00:00 CST 2020 nextFireTime: Thu Sep 17 12:04:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 12:02:00.034| ClusterQuartz_Worker-10 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 12:02:00 CST 2020 scheduledFireTime: Thu Sep 17 12:02:00 CST 2020 previousFireTime: 'Thu Sep 17 12:00:00 CST 2020 nextFireTime: Thu Sep 17 12:04:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 12:02:00.050| ClusterQuartz_Worker-1 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 12:02:00 CST 2020 scheduledFireTime: Thu Sep 17 12:02:00 CST 2020 previousFireTime: 'Thu Sep 17 12:00:00 CST 2020 nextFireTime: Thu Sep 17 12:04:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 12:02:00.052| ClusterQuartz_Worker-1 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 12:02:00 CST 2020 scheduledFireTime: Thu Sep 17 12:02:00 CST 2020 previousFireTime: 'Thu Sep 17 12:00:00 CST 2020 nextFireTime: Thu Sep 17 12:04:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 12:04:00.021| ClusterQuartz_Worker-2 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 12:04:00 CST 2020 scheduledFireTime: Thu Sep 17 12:04:00 CST 2020 previousFireTime: 'Thu Sep 17 12:02:00 CST 2020 nextFireTime: Thu Sep 17 12:06:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 12:04:00.023| ClusterQuartz_Worker-2 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'mqJobGroupName.mqJobName job: mqJobGroupName.mqJobName fireTime: 'Thu Sep 17 12:04:00 CST 2020 scheduledFireTime: Thu Sep 17 12:04:00 CST 2020 previousFireTime: 'Thu Sep 17 12:02:00 CST 2020 nextFireTime: Thu Sep 17 12:06:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 12:04:00.041| ClusterQuartz_Worker-3 | INFO |  -  | mq_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 12:04:00 CST 2020 scheduledFireTime: Thu Sep 17 12:04:00 CST 2020 previousFireTime: 'Thu Sep 17 12:02:00 CST 2020 nextFireTime: Thu Sep 17 12:06:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:35]
+2020-09-17 12:04:00.042| ClusterQuartz_Worker-3 | INFO |  -  | mq_delay_job进来了,context:JobExecutionContext: trigger: 'MQ_JOB_GROUP_NAME.MQ_JOB_NAME job: MQ_JOB_GROUP_NAME.MQ_JOB_NAME fireTime: 'Thu Sep 17 12:04:00 CST 2020 scheduledFireTime: Thu Sep 17 12:04:00 CST 2020 previousFireTime: 'Thu Sep 17 12:02:00 CST 2020 nextFireTime: Thu Sep 17 12:06:00 CST 2020 isRecovering: false refireCount: 0 | [com.qmth.themis.task.quartz.MqJob:37]
+2020-09-17 12:05:04.062| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600312976400 paused. | [org.quartz.core.QuartzScheduler:585]
+2020-09-17 12:05:04.159| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'myThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 12:05:04.159| SpringContextShutdownHook | INFO |  -  | Shutting down ExecutorService 'arbitrateThreadPool' | [org.springframework.scheduling.concurrent.ExecutorConfigurationSupport:218]
+2020-09-17 12:05:04.201| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[127.0.0.1:9876] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 12:05:04.205| NettyClientSelector_1 | INFO |  -  | closeChannel: close the connection to remote address[192.168.10.86:10911] result: true | [org.apache.rocketmq.logging.Slf4jLoggerFactory$Slf4jLogger:95]
+2020-09-17 12:05:04.213| SpringContextShutdownHook | INFO |  -  | Shutting down Quartz Scheduler | [org.springframework.scheduling.quartz.SchedulerFactoryBean:845]
+2020-09-17 12:05:04.213| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600312976400 shutting down. | [org.quartz.core.QuartzScheduler:666]
+2020-09-17 12:05:04.214| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600312976400 paused. | [org.quartz.core.QuartzScheduler:585]
+2020-09-17 12:05:04.219| SpringContextShutdownHook | INFO |  -  | Scheduler ClusterQuartz_$_kingdeMacBook-Air.local1600312976400 shutdown complete. | [org.quartz.core.QuartzScheduler:740]
+2020-09-17 12:05:04.229| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closing ... | [com.alibaba.druid.pool.DruidDataSource:1965]
+2020-09-17 12:05:04.277| SpringContextShutdownHook | INFO |  -  | {dataSource-1} closed | [com.alibaba.druid.pool.DruidDataSource:2037]
+>>>>>>> dev

+ 2 - 2
themis-backend/src/main/java/com/qmth/themis/backend/api/TBExamInvigilateUserController.java

@@ -161,7 +161,7 @@ public class TBExamInvigilateUserController {
             transMap.put("orgId", tbUser.getOrgId());
             transMap.put("remark", tbAttachment.getRemark());
             //mq发送消息start
-            MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.ROOM_CODE_IMPORT.name(), transMap, MqTagEnum.ROOM_CODE_IMPORT, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
+            MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.ROOM_CODE_IMPORT.name(), transMap, MqTagEnum.ROOM_CODE_IMPORT, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
             mqDtoService.assembleSendOneWayMsg(mqDto);
             //mq发送消息end
         } catch (Exception e) {
@@ -198,7 +198,7 @@ public class TBExamInvigilateUserController {
                 transMap.put("createId", tbUser.getId());
                 transMap.put("orgId", tbUser.getOrgId());
                 //mq发送消息start
-                MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.ROOM_CODE_EXPORT.name(), transMap, MqTagEnum.ROOM_CODE_EXPORT, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
+                MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.ROOM_CODE_EXPORT.name(), transMap, MqTagEnum.ROOM_CODE_EXPORT, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
                 mqDtoService.assembleSendOneWayMsg(mqDto);
                 //mq发送消息end
             } else {

+ 7 - 3
themis-backend/src/main/java/com/qmth/themis/backend/api/TBUserController.java

@@ -9,6 +9,7 @@ import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.base.BasePage;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.AuthDto;
+import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.response.TBUserDto;
 import com.qmth.themis.business.entity.TBOrg;
 import com.qmth.themis.business.entity.TBSession;
@@ -190,8 +191,10 @@ public class TBUserController {
         TBSession tbSession = new TBSession(sessionId, String.valueOf(user.getId()), authDto.getRoleCodes().toString(), source, platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token, expire);
         redisUtil.setUserSession(sessionId, tbSession, redisExpire);
         //mq发送消息start
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), platform.name(), tbSession, platform.name(), tbSession.getId(), user.getLoginName());
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), MqTagEnum.USER.name(), SystemOperationEnum.LOGIN, MqTagEnum.USER.name(), user.getId(), user.getLoginName());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), platform.name(), tbSession, MqTagEnum.valueOf(platform.name()), tbSession.getId(), user.getLoginName());
+        mqDtoService.assembleSendOneWayMsg(mqDto);
+        MqDto mqDtoLog = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.USER.name(), SystemOperationEnum.LOGIN, MqTagEnum.USER, String.valueOf(user.getId()), user.getLoginName());
+        mqDtoService.assembleSendOneWayMsg(mqDtoLog);
         //mq发送消息end
         //测试
         String test = SignatureInfo.build(SignatureType.TOKEN, sessionId, token);
@@ -531,7 +534,8 @@ public class TBUserController {
             cacheService.removeAccountCache(tbUser.getId());
         }
         //mq发送消息start
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), MqTagEnum.USER.name(), SystemOperationEnum.LOGOUT, MqTagEnum.USER.name(), tbUser.getId(), tbUser.getLoginName());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.USER.name(), SystemOperationEnum.LOGOUT, MqTagEnum.USER, String.valueOf(tbUser.getId()), tbUser.getLoginName());
+        mqDtoService.assembleSendOneWayMsg(mqDto);
         //mq发送消息end
         return ResultUtil.ok(Collections.singletonMap("success", true));
     }

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamActivityController.java

@@ -86,7 +86,7 @@ public class TEExamActivityController {
             prop.put("oper", "insert");
             prop.put("exam", teExam);
             if (Objects.nonNull(teExamActivityList.get(0)) && teExamActivityList.get(0).getEnable() == 1) {
-                MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
+                MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
                 mqDtoService.assembleSendOneWayMsg(mqDto);
             }
             //新增quartz任务,发送mq消息end

+ 4 - 4
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamController.java

@@ -123,7 +123,7 @@ public class TEExamController {
                     Map<String, Object> prop = new HashMap<>();
                     prop.put("oper", "delete");
                     if (Objects.nonNull(teExamActivityList.get(0)) && teExamActivityList.get(0).getEnable() == 1) {
-                        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
+                        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
                         mqDtoService.assembleSendOneWayMsg(mqDto);
                     }
                     //删除quartz任务,发送mq消息end
@@ -152,7 +152,7 @@ public class TEExamController {
                     Map<String, Object> prop = new HashMap<>();
                     prop.put("oper", "insert");
                     prop.put("exam", teExam);
-                    MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
+                    MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
                     mqDtoService.assembleSendOneWayMsg(mqDto);
                     //新增quartz任务,发送mq消息end
                     teExamActivityList.forEach(s -> {
@@ -170,7 +170,7 @@ public class TEExamController {
                     prop.put("oper", "insert");
                     prop.put("exam", teExam);
                     if (Objects.nonNull(teExamActivity) && teExamActivity.getEnable() == 1) {
-                        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(Arrays.asList(teExamActivity)), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
+                        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), JacksonUtil.parseJson(Arrays.asList(teExamActivity)), MqTagEnum.EXAM_ACTIVITY, String.valueOf(teExam.getId()), prop, tbUser.getName());
                         mqDtoService.assembleSendOneWayMsg(mqDto);
                     }
                 }
@@ -467,7 +467,7 @@ public class TEExamController {
             transMap.put("examId", examId);
             transMap.put(SystemConstant.TASK_ID, tbTaskHistory.getId());
             //mq发送消息start
-            MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_SCORE_CALCULATE.name(), transMap, MqTagEnum.EXAM_SCORE_CALCULATE, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
+            MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_SCORE_CALCULATE.name(), transMap, MqTagEnum.EXAM_SCORE_CALCULATE, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
             mqDtoService.assembleSendOneWayMsg(mqDto);
             //mq发送消息end
         } catch (Exception e) {

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamPaperController.java

@@ -149,7 +149,7 @@ public class TEExamPaperController {
             transMap.put("processAnswer", processAnswer);
             transMap.put("remark", tbAttachment.getRemark());
             //mq发送消息start
-            MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_PAPER_IMPORT.name(), transMap, MqTagEnum.EXAM_PAPER_IMPORT, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
+            MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_PAPER_IMPORT.name(), transMap, MqTagEnum.EXAM_PAPER_IMPORT, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
             mqDtoService.assembleSendOneWayMsg(mqDto);
             //mq发送消息end
         } catch (Exception e) {

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamStudentController.java

@@ -326,7 +326,7 @@ public class TEExamStudentController {
 			}
 			transMap.put("remark", tbAttachment.getRemark());
 			// mq发送消息start
-			MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name(), transMap,
+			MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name(), transMap,
 					MqTagEnum.EXAM_STUDENT_IMPORT, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
 			mqDtoService.assembleSendOneWayMsg(mqDto);
 			// mq发送消息end

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/TIeInvigilateCallMobileController.java

@@ -145,7 +145,7 @@ public class TIeInvigilateCallMobileController {
         MonitorStatusSourceEnum status = ExamRecordCacheUtil.getMonitorStatus(recordId, source.name());
         TIeExamInvigilateCallLog tIeExamInvigilateCallLog = new TIeExamInvigilateCallLog(recordId, source, liveUrl, status, monitorKey, MonitorCallStatusSourceEnum.STOP);
         //监考监控通话信息 发送mq start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //监考监控通话信息 发送mq end
         return ResultUtil.ok(Collections.singletonMap("success", true));

+ 3 - 3
themis-backend/src/main/java/com/qmth/themis/backend/api/TIeInvigilateController.java

@@ -256,7 +256,7 @@ public class TIeInvigilateController {
         } else {
             mqTagEnum = MqTagEnum.OE_HARD_FINISH;
         }
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), mqTagEnum.name(), JacksonUtil.parseJson(recordIdList), mqTagEnum, String.valueOf(tbUser.getId()), mapParameter, tbUser.getName());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), mqTagEnum.name(), JacksonUtil.parseJson(recordIdList), mqTagEnum, String.valueOf(tbUser.getId()), mapParameter, tbUser.getName());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //发送mq给客户端强制收卷end
         return ResultUtil.ok(Collections.singletonMap("success", true));
@@ -399,12 +399,12 @@ public class TIeInvigilateController {
         }
         TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
         //发送mq给客户端监考消息start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.OE_IM_CLUSTERING.name(), recordId, MqTagEnum.OE_IM_CLUSTERING, String.valueOf(tbUser.getId()), mapParameter, tbUser.getName());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.OE_IM_CLUSTERING.name(), recordId, MqTagEnum.OE_IM_CLUSTERING, String.valueOf(tbUser.getId()), mapParameter, tbUser.getName());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //发送mq给客户端监考消息end
 
         //发送mq给客户端监考强制活体验证start
-        mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.OE_LIVENESS_VERIFY.name(), recordId, MqTagEnum.OE_LIVENESS_VERIFY, String.valueOf(tbUser.getId()), mapParameter, tbUser.getName());
+        mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.OE_LIVENESS_VERIFY.name(), recordId, MqTagEnum.OE_LIVENESS_VERIFY, String.valueOf(tbUser.getId()), mapParameter, tbUser.getName());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //发送mq给客户端监考强制活体验证end
         return ResultUtil.ok(Collections.singletonMap("success", true));

+ 18 - 12
themis-backend/src/main/java/com/qmth/themis/backend/start/StartRunning.java

@@ -39,41 +39,47 @@ public class StartRunning implements CommandLineRunner {
         /**
          * session
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.sessionConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.WEB.name() + "||" + MqTagEnum.WIN.name() + "||" + MqTagEnum.MAC.name() + "||" + MqTagEnum.WXAPP.name() + "||" + MqTagEnum.IOS.name() + "||" + MqTagEnum.ANDROID.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(SessionConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.SESSION_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.WEB.name() + "||" + MqTagEnum.WIN.name() + "||" + MqTagEnum.MAC.name() + "||" + MqTagEnum.WXAPP.name() + "||" + MqTagEnum.IOS.name() + "||" + MqTagEnum.ANDROID.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(SessionConcurrentlyImpl.class));
         /**
          * userLog
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.userLogConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.USER.name() + "||" + MqTagEnum.STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(UserLogConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.USER_LOG_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.USER.name() + "||" + MqTagEnum.STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(UserLogConcurrentlyImpl.class));
         /**
          * task
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.taskConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_EXPORT.name() + "||" + MqTagEnum.EXAM_PAPER_IMPORT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TaskConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.TASK_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_EXPORT.name() + "||" + MqTagEnum.EXAM_PAPER_IMPORT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TaskConcurrentlyImpl.class));
         /**
          * log
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.logConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXCEPTION_LOG.name() + "||" + MqTagEnum.WARNING_LOG.name() + "||" + MqTagEnum.MONITOR_LOG.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LogConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.LOG_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXCEPTION_LOG.name() + "||" + MqTagEnum.WARNING_LOG.name() + "||" + MqTagEnum.MONITOR_LOG.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LogConcurrentlyImpl.class));
         /**
          * websocket mq start
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.websocketConsumerDelayGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebsocketUnNormalConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.WEBSOCKET_DELAY_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebsocketUnNormalConcurrentlyImpl.class));
         /**
          * websocket mq end
          */
         //计算客观分
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.calculateObjectiveScoreGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateObjectiveScoreConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.CALCULATE_OBJECTIVE_SCORE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateObjectiveScoreConcurrentlyImpl.class));
         //人脸验证保存
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.faceVerifySaveGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(FaceVerifyConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.FACE_VERIFY_SAVE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(FaceVerifyConcurrentlyImpl.class));
         //活体验证保存
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.livenessVerifySaveGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LivenessVerifyConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.LIVENESS_VERIFY_SAVE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LivenessVerifyConcurrentlyImpl.class));
         //考试记录数据持久化
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordPersistedGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordPersistedConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_PERSISTED_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordPersistedConcurrentlyImpl.class));
         //考试记录数据更新
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordUpdateGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordUpdateConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_UPDATE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordUpdateConcurrentlyImpl.class));
         //考试记录数据初始化
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordInitGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordInitConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_INIT_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordInitConcurrentlyImpl.class));
         
         //考试重新算分
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.scoreCalculateGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_SCORE_CALCULATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateScoreConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.SCORE_CALCULATE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_SCORE_CALCULATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateScoreConcurrentlyImpl.class));
+
+        //考生数据更新
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_STUDENT_UPDATE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDNET_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamStudentUpdateConcurrentlyImpl.class));
+
+        //考试断点
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_BREAK_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_BREAK.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamBreakConcurrentlyImpl.class));
         SystemConstant.initTempFiles();
         log.info("服务器启动时执行 end");
     }

+ 4 - 0
themis-business/src/main/java/com/qmth/themis/business/dto/response/TEExamActivityDto.java

@@ -1,5 +1,6 @@
 package com.qmth.themis.business.dto.response;
 
+<<<<<<< HEAD
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -7,6 +8,9 @@ import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
+=======
+import com.qmth.themis.business.cache.ExamRecordCacheUtil;
+>>>>>>> dev
 import com.qmth.themis.business.cache.bean.ExamActivityCacheBean;
 import com.qmth.themis.business.cache.bean.ExamCacheBean;
 import com.qmth.themis.business.cache.bean.ExamCourseCacheBean;

+ 20 - 15
themis-business/src/main/java/com/qmth/themis/business/enums/MqGroupEnum.java

@@ -12,75 +12,80 @@ public enum MqGroupEnum {
     /**
      * session会话
      */
-    sessionConsumerGroup("themis-group-exam-session"),
+    SESSION_GROUP("themis-group-exam-session"),
 
     /**
      * 用户轨迹
      */
-    userLogConsumerGroup("themis-group-exam-userLog"),
+    USER_LOG_GROUP("themis-group-exam-userLog"),
 
     /**
      * 导入导出任务
      */
-    taskConsumerGroup("themis-group-exam-task"),
+    TASK_GROUP("themis-group-exam-task"),
 
     /**
      * 日志
      */
-    logConsumerGroup("themis-group-exam-log"),
+    LOG_GROUP("themis-group-exam-log"),
 
     /**
      * websocket oe 考生 group
      */
-    websocketConsumerOeGroup("themis-group-exam-websocketOe"),
+    WEBSOCKET_OE_GROUP("themis-group-exam-websocketOe"),
 
     /**
      * websocket超时退出 考生 group
      */
-    websocketConsumerDelayGroup("themis-group-exam-websocketDelay"),
+    WEBSOCKET_DELAY_GROUP("themis-group-exam-websocketDelay"),
 
     /**
      * quartz 考场 group
      */
-    quartzConsumerGroup("themis-group-exam-quartz"),
+    QUARTZ_GROUP("themis-group-exam-quartz"),
 
     /**
      * 计算客观分
      */
-    calculateObjectiveScoreGroup("themis-group-exam-calculateObjectiveScore"),
+    CALCULATE_OBJECTIVE_SCORE_GROUP("themis-group-exam-calculateObjectiveScore"),
 
     /**
      * 人脸验证
      */
-    faceVerifySaveGroup("themis-group-exam-faceVerifySave"),
+    FACE_VERIFY_SAVE_GROUP("themis-group-exam-faceVerifySave"),
     /**
      * 活体验证
      */
-    livenessVerifySaveGroup("themis-group-exam-livenessVerifySave"),
+    LIVENESS_VERIFY_SAVE_GROUP("themis-group-exam-livenessVerifySave"),
 
     /**
      * 考试记录数据持久化
      */
-    examRecordPersistedGroup("themis-group-exam-examRecordPersisted"),
+    EXAM_RECORD_PERSISTED_GROUP("themis-group-exam-examRecordPersisted"),
     
     /**
      * 考试记录数据初始化
      */
-    examRecordInitGroup("themis-group-exam-examRecordInit"),
+    EXAM_RECORD_INIT_GROUP("themis-group-exam-examRecordInit"),
     
     /**
      * 考试记录数据更新
      */
-    examRecordUpdateGroup("themis-group-exam-examRecordUpdate"),
+    EXAM_RECORD_UPDATE_GROUP("themis-group-exam-examRecordUpdate"),
 	
 	/**
      * 考试重新算分
      */
-    scoreCalculateGroup("themis-group-exam-scoreCalculate"),
+    SCORE_CALCULATE_GROUP("themis-group-exam-scoreCalculate"),
     /**
      * 考生数据更新
      */
-    examStudentUpdateGroup("themis-group-exam-examStudentUpdate");
+    EXAM_STUDENT_UPDATE_GROUP("themis-group-exam-examStudentUpdate"),
+
+    /**
+     * 考试断点
+     */
+    EXAM_BREAK_GROUP("themis-group-exam-examBreak");
 
     private MqGroupEnum(String code) {
         this.code = code;

+ 5 - 3
themis-business/src/main/java/com/qmth/themis/business/enums/MqTagEnum.java

@@ -27,7 +27,7 @@ public enum MqTagEnum {
     OE_WARNING_FINISH("websocket客户端预警强制离线(交卷)标签", "预警强制离线(交卷)", "normal", 15),
     OE_HARD_FINISH("websocket客户端手动(交卷)标签", "手动(交卷)", "normal", 16),
     OE_LIVENESS_VERIFY("websocket客户端监考强制活体验证标签", "监考强制活体验证", "normal", 17),
-    OE_UN_NORMAL("websocket超时退出标签", "websocket超时退出超时退出", "delay", 18),
+    OE_UN_NORMAL("websocket超时退出标签", "websocket超时退出", "delay", 18),
     EXAM_ACTIVITY("考场一次性延时任务标签", "考场一次性延时任务", "normal", 19),
     QUARTZ("quartz标签", "quartz任务", "normal", 20),
     CALCULATE_OBJECTIVE_SCORE("计算客观分标签", "计算客观分", "normal", 21),
@@ -39,8 +39,10 @@ public enum MqTagEnum {
     WARNING_LOG("预警标签", "预警", "normal", 27),
     EXCEPTION_LOG("异常标签", "异常", "normal", 28),
     MONITOR_LOG("监考监控标签", "监考监控", "normal", 29),
-    EXAM_SCORE_CALCULATE("重新算分", "考试", "normal", 30),
-    EXAM_STUDNET_UPDATE("考生数据更新", "考试", "normal", 31),;
+    EXAM_SCORE_CALCULATE("重新算分标签", "重新算分", "normal", 30),
+    EXAM_STUDNET_UPDATE("考生数据更新标签", "考生数据更新", "normal", 31),
+    EXAM_BREAK("考试断点标签", "考试断点", "normal", 32),
+    EXAM_STOP("考试移动端监控暂停标签", "考试移动端监控暂停", "normal", 33);
 
     private MqTagEnum(String desc, String code, String type, int id) {
         this.desc = desc;

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/enums/MqTopicEnum.java

@@ -9,7 +9,7 @@ package com.qmth.themis.business.enums;
  */
 public enum MqTopicEnum {
 
-    themisTopic("themis-topic-exam");
+    THEMIS_TOPIC("themis-topic-exam");
 
     private MqTopicEnum(String code) {
         this.code = code;

+ 0 - 8
themis-business/src/main/java/com/qmth/themis/business/service/MqDtoService.java

@@ -11,14 +11,6 @@ import com.qmth.themis.business.dto.MqDto;
  */
 public interface MqDtoService {
 
-    /**
-     * 组装单向消息
-     *
-     * @param o
-     * @return
-     */
-    public MqDto assembleSendOneWayMsg(Object... o);
-
     /**
      * 组装单向消息
      *

+ 0 - 7
themis-business/src/main/java/com/qmth/themis/business/service/TEExamStudentLogService.java

@@ -12,11 +12,4 @@ import com.qmth.themis.business.entity.TEExamStudentLog;
  */
 public interface TEExamStudentLogService extends IService<TEExamStudentLog> {
 
-    /**
-     * 保存学生轨迹
-     *
-     * @param o
-     * @return
-     */
-    public boolean saveStudentLogInfo(Object... o);
 }

+ 0 - 7
themis-business/src/main/java/com/qmth/themis/business/service/TEUserLogService.java

@@ -12,11 +12,4 @@ import com.qmth.themis.business.entity.TEUserLog;
  */
 public interface TEUserLogService extends IService<TEUserLog> {
 
-    /**
-     * 保存用户轨迹
-     *
-     * @param o
-     * @return
-     */
-    public boolean saveUserLogInfo(Object... o);
 }

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/service/impl/CommonServiceImpl.java

@@ -67,7 +67,7 @@ public class CommonServiceImpl implements CommonService {
 				Map<String, Object> propMap = new HashMap<String, Object>();
 				propMap.put("timeOut", time);
 				propMap.put("mqExecTime", dt.toInstant(ZoneOffset.of("+8")).toEpochMilli());
-				MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(),
+				MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(),
 						transMap, MqTagEnum.EXAM_RECORD_PERSISTED, recordId.toString(), propMap, recordId.toString());
 
 				mqDtoService.assembleSendAsyncDelayMsg(mqDto);

+ 0 - 26
themis-business/src/main/java/com/qmth/themis/business/service/impl/MqDtoServiceImpl.java

@@ -30,32 +30,6 @@ public class MqDtoServiceImpl implements MqDtoService {
     @Resource
     RedisUtil redisUtil;
 
-    /**
-     * 组装单向消息
-     *
-     * @param o
-     * @return
-     */
-    @Override
-    public MqDto assembleSendOneWayMsg(Object... o) {
-        MqDto mqDto = null;
-        MqTagEnum mqtagEnum = MqTagEnum.valueOf(String.valueOf(o[3]));
-        //往mq发送消息插入会话信息
-        mqDto = new MqDto(String.valueOf(o[0]), String.valueOf(o[1]), o[2], mqtagEnum, String.valueOf(o[4]), String.valueOf(o[5]));
-        mqDto.setAck(SystemConstant.DELIVERED_ACK_TYPE);
-        try {
-            producerServer.sendOneWay(mqDto);
-        } catch (Exception e) {
-            log.error("请求出错", e);
-            if (Objects.nonNull(mqDto)) {
-                mqDto.setAck(SystemConstant.UNSEND_ACK_TYPE);
-            }
-        } finally {
-            setTopicBuffer(mqDto);
-        }
-        return mqDto;
-    }
-
     /**
      * 组装单向消息
      *

+ 5 - 5
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -291,7 +291,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         teStudentCacheDto.setUnFinishedRecordId(recordId);
         redisUtil.setStudent(studentId, teStudentCacheDto);
         //mq发送消息start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.FIRST_PREPARE, MqTagEnum.STUDENT, String.valueOf(teStudentCacheDto.getId()), teStudentCacheDto.getIdentity());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.FIRST_PREPARE, MqTagEnum.STUDENT, String.valueOf(teStudentCacheDto.getId()), teStudentCacheDto.getIdentity());
         this.sendOeLogMessage(SystemOperationEnum.FIRST_PREPARE, examStudentId, recordId, mqDto);
         updateExamStudent(examStudentId, alreadyExamCount, recordId);
         //mq发送消息end
@@ -303,7 +303,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         transMap.put("examStudentId", examStudentId);
         transMap.put("alreadyExamCount", alreadyExamCount);
         transMap.put("currentRecordId", currentRecordId);
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_STUDNET_UPDATE.name(), transMap, MqTagEnum.EXAM_STUDNET_UPDATE, examStudentId.toString(), examStudentId.toString());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDNET_UPDATE.name(), transMap, MqTagEnum.EXAM_STUDNET_UPDATE, examStudentId.toString(), examStudentId.toString());
         mqDtoService.assembleSendOneWayMsg(mqDto);
     }
 
@@ -487,7 +487,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         transMap.put("subNumber", subNumber);
         transMap.put("subIndex", subIndex);
         // mq发送消息start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), transMap,
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), transMap,
                 MqTagEnum.CALCULATE_OBJECTIVE_SCORE, recordId.toString(), recordId.toString());
         mqDtoService.assembleSendOneWayMsg(mqDto);
     }
@@ -754,7 +754,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         //异步持久化
         checkToPersisted(recordId);
         //mq发送消息start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.FINISHED, MqTagEnum.STUDENT, String.valueOf(teStudentCacheDto.getId()), teStudentCacheDto.getIdentity());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.FINISHED, MqTagEnum.STUDENT, String.valueOf(teStudentCacheDto.getId()), teStudentCacheDto.getIdentity());
         this.sendOeLogMessage(SystemOperationEnum.FINISHED, examStudentId, recordId, mqDto);
         //mq发送消息end
         return ret;
@@ -780,7 +780,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         Map<String, Object> propMap = new HashMap<String, Object>();
         propMap.put("timeOut", time);
         propMap.put("mqExecTime", dt.toInstant(ZoneOffset.of("+8")).toEpochMilli());
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(),
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(),
                 transMap, MqTagEnum.EXAM_RECORD_PERSISTED, recordId.toString(), propMap, recordId.toString());
 
         mqDtoService.assembleSendAsyncDelayMsg(mqDto);

+ 0 - 17
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamStudentLogServiceImpl.java

@@ -18,21 +18,4 @@ import java.util.Objects;
 @Service
 public class TEExamStudentLogServiceImpl extends ServiceImpl<TEExamStudentLogMapper, TEExamStudentLog> implements TEExamStudentLogService {
 
-    /**
-     * 保存学生轨迹
-     *
-     * @param o
-     * @return
-     */
-    @Override
-    public boolean saveStudentLogInfo(Object... o) {
-        TEExamStudentLog teExamStudentLog = null;
-        if (Objects.nonNull(o) && o.length == 4) {
-            teExamStudentLog = new TEExamStudentLog(String.valueOf(o[0]), String.valueOf(o[1]), String.valueOf(o[2]), Long.parseLong(String.valueOf(o[3])));
-        } else if (Objects.nonNull(o) && o.length == 6) {
-            teExamStudentLog = new TEExamStudentLog(String.valueOf(o[0]), String.valueOf(o[1]), String.valueOf(o[2]), Long.parseLong(String.valueOf(o[3])), Long.parseLong(String.valueOf(o[4])), Long.parseLong(String.valueOf(o[5])));
-        }
-        this.save(teExamStudentLog);
-        return true;
-    }
 }

+ 5 - 2
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEMobileServiceImpl.java

@@ -12,6 +12,7 @@ import com.qmth.themis.business.cache.bean.ExamStudentAnswerCacheBean;
 import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.AuthDto;
+import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.service.MqDtoService;
@@ -90,8 +91,10 @@ public class TEMobileServiceImpl implements TEMobileService {
         ret.setTime(System.currentTimeMillis());
         ret.setMode(mode);
         //mq发送消息start
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), platform.name(), tbSession, platform.name(), tbSession.getId(), es.getIdentity());
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.LOGIN, MqTagEnum.STUDENT.name(), es.getStudentId(), es.getIdentity());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), platform.name(), tbSession, MqTagEnum.valueOf(platform.name()), tbSession.getId(), es.getIdentity());
+        mqDtoService.assembleSendOneWayMsg(mqDto);
+        MqDto mqDtoLog = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.LOGIN, MqTagEnum.STUDENT, String.valueOf(es.getStudentId()), es.getIdentity());
+        mqDtoService.assembleSendOneWayMsg(mqDtoLog);
         //mq发送消息end
         //测试
         String test = SignatureInfo.build(SignatureType.TOKEN, sessionId, token);

+ 0 - 16
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEUserLogServiceImpl.java

@@ -19,21 +19,5 @@ import java.util.Objects;
  */
 @Service
 public class TEUserLogServiceImpl extends ServiceImpl<TEUserLogMapper, TEUserLog> implements TEUserLogService {
-    private final static Logger log = LoggerFactory.getLogger(TEUserLogServiceImpl.class);
 
-    /**
-     * 保存用户轨迹
-     *
-     * @param o
-     * @return
-     */
-    @Override
-    public boolean saveUserLogInfo(Object... o) {
-        TEUserLog teUserLog = null;
-        if (Objects.nonNull(o) && o.length == 4) {
-            teUserLog = new TEUserLog(String.valueOf(o[0]), String.valueOf(o[1]), String.valueOf(o[2]), Long.parseLong(String.valueOf(o[3])));
-        }
-        this.save(teUserLog);
-        return true;
-    }
 }

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -411,7 +411,7 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
         transMap.put("colValue", colValue);
         transMap.put("isDate", isDate);
         //mq发送消息start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), transMap, MqTagEnum.EXAM_RECORD_UPDATE, recordId.toString(), colName);
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), transMap, MqTagEnum.EXAM_RECORD_UPDATE, recordId.toString(), colName);
         mqDtoService.assembleSendOneWayMsg(mqDto);
     }
 
@@ -431,7 +431,7 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
     public void dataInitMq(Map<String, Object> param) {
         Long id = (Long) param.get("id");
         //mq发送消息start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), param, MqTagEnum.EXAM_RECORD_INIT, id.toString(), id.toString());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), param, MqTagEnum.EXAM_RECORD_INIT, id.toString(), id.toString());
         mqDtoService.assembleSendOneWayMsg(mqDto);
     }
 

+ 9 - 27
themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java

@@ -5,8 +5,6 @@ import com.qmth.themis.business.annotation.ApiJsonObject;
 import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.bean.exam.*;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
-import com.qmth.themis.business.cache.bean.ExamCacheBean;
-import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.WebsocketDto;
@@ -14,14 +12,16 @@ import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
 import com.qmth.themis.business.dto.response.TEExamDto;
 import com.qmth.themis.business.dto.response.TEExamResultDto;
 import com.qmth.themis.business.entity.TEExam;
-import com.qmth.themis.business.enums.*;
+import com.qmth.themis.business.enums.MqTagEnum;
+import com.qmth.themis.business.enums.MqTopicEnum;
+import com.qmth.themis.business.enums.SystemOperationEnum;
+import com.qmth.themis.business.enums.WebsocketTypeEnum;
 import com.qmth.themis.business.service.MqDtoService;
 import com.qmth.themis.business.service.TEExamService;
 import com.qmth.themis.business.service.TEExamStudentService;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.business.util.ServletUtil;
-import com.qmth.themis.common.contanst.Constants;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.util.Result;
@@ -126,31 +126,13 @@ public class TEExamController {
             }
             ExamStartBean examStartBean = teExamService.start(teStudent.getId(), param.getRecordId());
             if (Objects.nonNull(param.getReason())) {
-                Long recordId = param.getRecordId();
-                Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
-                ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
-                ExamCacheBean exam=teExamService.getExamCacheBean(examStudentCacheBean.getExamId());
-                Integer alreadyBreakCount=ExamRecordCacheUtil.getAlreadyBreakCount(recordId);
-                Integer leftBreakResumeCount = exam.getBreakResumeCount()-alreadyBreakCount;
-                leftBreakResumeCount = leftBreakResumeCount <= 0 ? 0 : leftBreakResumeCount;
-                if (leftBreakResumeCount <= 0) {
-                    Integer durationSeconds = Objects.isNull(ExamRecordCacheUtil.getDurationSeconds(recordId)) ? 0 : ExamRecordCacheUtil.getDurationSeconds(recordId);
-                    teExamService.finish(examStudentCacheBean.getStudentId(), recordId, FinishTypeEnum.AUTO.name(), durationSeconds);
-                } else {
-                	alreadyBreakCount++;
-                    ExamRecordCacheUtil.setLastBreakId(param.getRecordId(), Constants.idGen.next());
-                    ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.RESUME_PREPARE);
-                    ExamRecordCacheUtil.setLastBreakTime(recordId);
-                    ExamRecordCacheUtil.setAlreadyBreakCount(recordId, alreadyBreakCount);
-                    ExamRecordCacheUtil.setLastStartTime(recordId);
-                    //考试断点异常原因 发送mq start
-                    MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXCEPTION_LOG.name(), JacksonUtil.parseJson(param), MqTagEnum.EXCEPTION_LOG, String.valueOf(param.getRecordId()), param.getReason());
-                    mqDtoService.assembleSendOneWayMsg(mqDto);
-                    //考试断点异常原因 发送mq end
-                }
+                //考试断点异常原因 发送mq start
+                MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXCEPTION_LOG.name(), JacksonUtil.parseJson(param), MqTagEnum.EXCEPTION_LOG, String.valueOf(param.getRecordId()), param.getReason());
+                mqDtoService.assembleSendOneWayMsg(mqDto);
+                //考试断点异常原因 发送mq end
             } else {
                 //mq发送消息start
-                MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.ANSWERING, MqTagEnum.STUDENT, String.valueOf(teStudent.getId()), teStudent.getIdentity());
+                MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.ANSWERING, MqTagEnum.STUDENT, String.valueOf(teStudent.getId()), teStudent.getIdentity());
                 teExamService.sendOeLogMessage(SystemOperationEnum.ANSWERING, ExamRecordCacheUtil.getExamStudentId(param.getRecordId()), param.getRecordId(), mqDto);
                 //mq发送消息end
             }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TEFaceController.java

@@ -84,7 +84,7 @@ public class TEFaceController {
         transMap.put("time", param.getTime());
         transMap.put("exception", param.getException());
         //mq发送消息start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), transMap, MqTagEnum.FACE_VERIFY_SAVE, param.getRecordId().toString(), param.getRecordId().toString());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), transMap, MqTagEnum.FACE_VERIFY_SAVE, param.getRecordId().toString(), param.getRecordId().toString());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         return ResultUtil.ok(ret);
     }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TELivenessController.java

@@ -85,7 +85,7 @@ public class TELivenessController {
 		transMap.put("finishTime", param.getFinishTime());
 		transMap.put("exception", param.getException());
 		// mq发送消息start
-		MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), transMap,
+		MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), transMap,
 				MqTagEnum.LIVENESS_VERIFY_SAVE, param.getRecordId().toString(), param.getRecordId().toString());
 		mqDtoService.assembleSendOneWayMsg(mqDto);
 		return ResultUtil.ok(ret);

+ 23 - 10
themis-exam/src/main/java/com/qmth/themis/exam/api/TEStudentController.java

@@ -14,6 +14,7 @@ import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
 import com.qmth.themis.business.config.SystemConfig;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.AuthDto;
+import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
 import com.qmth.themis.business.dto.response.TEExamActivityDto;
 import com.qmth.themis.business.dto.response.TEExamDto;
@@ -23,6 +24,7 @@ import com.qmth.themis.business.entity.TEConfig;
 import com.qmth.themis.business.entity.TEStudent;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.service.*;
+import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.business.util.ServletUtil;
 import com.qmth.themis.business.util.SessionUtil;
@@ -185,8 +187,10 @@ public class TEStudentController {
         TBSession tbSession = new TBSession(sessionId, String.valueOf(teStudent.getId()), authDto.getRoleCodes().toString(), source, platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token, expire);
         redisUtil.setUserSession(sessionId, tbSession, redisExpire);
         //mq发送消息start
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), platform.name(), tbSession, platform.name(), tbSession.getId(), teStudent.getIdentity());
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.LOGIN, MqTagEnum.STUDENT.name(), teStudent.getId(), teStudent.getIdentity());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), platform.name(), tbSession, MqTagEnum.valueOf(platform.name()), tbSession.getId(), teStudent.getIdentity());
+        mqDtoService.assembleSendOneWayMsg(mqDto);
+        MqDto mqDtoLog = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.LOGIN, MqTagEnum.STUDENT, String.valueOf(teStudent.getId()), teStudent.getIdentity());
+        mqDtoService.assembleSendOneWayMsg(mqDtoLog);
         //mq发送消息end
         //测试
         String test = SignatureInfo.build(SignatureType.TOKEN, sessionId, token);
@@ -217,9 +221,9 @@ public class TEStudentController {
             //获取最近同步时间
             Date clientLastSyncTime = ExamRecordCacheUtil.getClientLastSyncTime(recordId);
             //获取剩余断点次数
-            Integer alreadyBreakCount=ExamRecordCacheUtil.getAlreadyBreakCount(recordId);
-            Integer leftBreakResumeCount = ec.getBreakResumeCount()-alreadyBreakCount;
-            
+            Integer alreadyBreakCount = ExamRecordCacheUtil.getAlreadyBreakCount(recordId);
+            Integer leftBreakResumeCount = ec.getBreakResumeCount() - alreadyBreakCount;
+            leftBreakResumeCount = leftBreakResumeCount <= 0 ? 0 : leftBreakResumeCount;
             //如果断点时间大于整体断点时间,则强制交卷
             if (Objects.equals(status, ExamRecordStatusEnum.ANSWERING) || Objects.equals(status, ExamRecordStatusEnum.BREAK_OFF) || Objects.equals(status, ExamRecordStatusEnum.RESUME_PREPARE)) {
                 if (Objects.nonNull(clientLastSyncTime) && (System.currentTimeMillis() - clientLastSyncTime.getTime()) / 1000 > breakExpireSeconds) {
@@ -228,9 +232,7 @@ public class TEStudentController {
                     if (Objects.nonNull(list) && list.size() > 0) {
                         map.put("waiting", list);
                     }
-                } else {//否则断点次数减1
-                    leftBreakResumeCount--;
-                    leftBreakResumeCount = leftBreakResumeCount <= 0 ? 0 : leftBreakResumeCount;
+                } else {
                     //如果断点次数为0,也强制交卷
                     if (leftBreakResumeCount <= 0) {
                         teExamService.finish(teStudentCacheDto.getId(), recordId, FinishTypeEnum.AUTO.name(), durationSeconds);
@@ -238,7 +240,17 @@ public class TEStudentController {
                         if (Objects.nonNull(list) && list.size() > 0) {
                             map.put("waiting", list);
                         }
-                    } else {
+                    } else {//否则断点次数+1
+                        alreadyBreakCount++;
+                        ExamRecordCacheUtil.setLastBreakId(recordId, Constants.idGen.next());
+                        ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.RESUME_PREPARE);
+                        ExamRecordCacheUtil.setLastBreakTime(recordId);
+                        ExamRecordCacheUtil.setAlreadyBreakCount(recordId, alreadyBreakCount);
+                        ExamRecordCacheUtil.setLastStartTime(recordId);
+                        //考试断点异常原因 发送mq start
+                        MqDto mqDtoBreak = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_BREAK.name(), ExceptionEnum.NET_TIME_OUT, MqTagEnum.EXAM_BREAK, String.valueOf(recordId), String.valueOf(recordId));
+                        mqDtoService.assembleSendOneWayMsg(mqDtoBreak);
+                        //考试断点异常原因 发送mq end
                         ExamUnFinishBean examUnFinishBean = this.unFinishCommon(recordId, ec, examStudentCacheBean, examActivityCacheBean, examStudentId);
                         map.put("unFinished", examUnFinishBean);
                     }
@@ -286,7 +298,8 @@ public class TEStudentController {
             cacheService.removeStudentCache(teStudent.getId());
         }
         //mq发送消息start
-        mqDtoService.assembleSendOneWayMsg(MqTopicEnum.themisTopic.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.LOGOUT, MqTagEnum.STUDENT.name(), teStudent.getId(), teStudent.getIdentity());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.LOGOUT, MqTagEnum.STUDENT, String.valueOf(teStudent.getId()), teStudent.getIdentity());
+        mqDtoService.assembleSendOneWayMsg(mqDto);
         //mq发送消息end
         return ResultUtil.ok(Collections.singletonMap("success", true));
     }

+ 4 - 4
themis-exam/src/main/java/com/qmth/themis/exam/api/TIeInvigilateCallMobileController.java

@@ -85,7 +85,7 @@ public class TIeInvigilateCallMobileController {
             ExamRecordCacheUtil.setMonitorLiveUrl(recordId, source.name(), liveUrl);
 
             //监考监控通话信息 发送mq start
-            MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+            MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
             mqDtoService.assembleSendOneWayMsg(mqDto);
             //监考监控通话信息 发送mq end
         } catch (Exception e) {
@@ -136,7 +136,7 @@ public class TIeInvigilateCallMobileController {
         TIeExamInvigilateCallLog tIeExamInvigilateCallLog = new TIeExamInvigilateCallLog(recordId, source, liveUrl, status, monitorKey, MonitorCallStatusSourceEnum.START);
 
         //监考监控通话信息 发送mq start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //监考监控通话信息 发送mq end
         return ResultUtil.ok(Collections.singletonMap("updateTime", System.currentTimeMillis()));
@@ -191,7 +191,7 @@ public class TIeInvigilateCallMobileController {
         }
 
         //监考监控通话信息 发送mq start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //监考监控通话信息 发送mq end
 
@@ -246,7 +246,7 @@ public class TIeInvigilateCallMobileController {
         MonitorStatusSourceEnum status = ExamRecordCacheUtil.getMonitorStatus(recordId, source.name());
         TIeExamInvigilateCallLog tIeExamInvigilateCallLog = new TIeExamInvigilateCallLog(recordId, source, liveUrl, status, monitorKey, MonitorCallStatusSourceEnum.STOP);
         //监考监控通话信息 发送mq start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //监考监控通话信息 发送mq end
         return ResultUtil.ok(Collections.singletonMap("updateTime", System.currentTimeMillis()));

+ 4 - 4
themis-exam/src/main/java/com/qmth/themis/exam/api/TIeInvigilateCallOeController.java

@@ -77,7 +77,7 @@ public class TIeInvigilateCallOeController {
             ExamRecordCacheUtil.setMonitorStatus(recordId, source.name(), tIeExamInvigilateCallLog.getStatus());
 
             //监考监控通话信息 发送mq start
-            MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+            MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
             mqDtoService.assembleSendOneWayMsg(mqDto);
             //监考监控通话信息 发送mq end
         } catch (Exception e) {
@@ -132,7 +132,7 @@ public class TIeInvigilateCallOeController {
         }
 
         //监考监控通话信息 发送mq start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //监考监控通话信息 发送mq end
         Map map = new HashMap();
@@ -174,7 +174,7 @@ public class TIeInvigilateCallOeController {
         TIeExamInvigilateCallLog tIeExamInvigilateCallLog = new TIeExamInvigilateCallLog(recordId, source, liveUrl, status, monitorKey, MonitorCallStatusSourceEnum.START);
 
         //监考监控通话信息 发送mq start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //监考监控通话信息 发送mq end
         return ResultUtil.ok(Collections.singletonMap("updateTime", System.currentTimeMillis()));
@@ -209,7 +209,7 @@ public class TIeInvigilateCallOeController {
         String monitorKey = ExamRecordCacheUtil.getMonitorKey(recordId);
         TIeExamInvigilateCallLog tIeExamInvigilateCallLog = new TIeExamInvigilateCallLog(recordId, source, liveUrl, status, monitorKey, MonitorCallStatusSourceEnum.STOP);
         //监考监控通话信息 发送mq start
-        MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
+        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         mqDtoService.assembleSendOneWayMsg(mqDto);
         //监考监控通话信息 发送mq end
         return ResultUtil.ok(Collections.singletonMap("updateTime", System.currentTimeMillis()));

+ 9 - 0
themis-exam/src/main/java/com/qmth/themis/exam/listener/service/MqOeLogicService.java

@@ -28,4 +28,13 @@ public interface MqOeLogicService {
      * @param key
      */
     public void execMqOeLogic(MqDto mqDto, String key) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException;
+
+    /**
+     * oe mobile 逻辑
+     *
+     * @param mqDto
+     * @param key
+     */
+    public void execMqOeMobileLogic(MqDto mqDto, String key);
+
 }

+ 43 - 4
themis-exam/src/main/java/com/qmth/themis/exam/listener/service/impl/MqOeLogicServiceImpl.java

@@ -7,6 +7,7 @@ import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.WebsocketDto;
+import com.qmth.themis.business.entity.TEExamStudentLog;
 import com.qmth.themis.business.entity.TIeExamInvigilateNotice;
 import com.qmth.themis.business.entity.TMRocketMessage;
 import com.qmth.themis.business.enums.FinishTypeEnum;
@@ -20,6 +21,7 @@ import com.qmth.themis.business.service.TMRocketMessageService;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.exam.listener.service.MqOeLogicService;
+import com.qmth.themis.exam.websocket.WebSocketMobileServer;
 import com.qmth.themis.exam.websocket.WebSocketOeServer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -109,7 +111,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                     map.put(SystemConstant.MESSAGE, FinishTypeEnum.valueOf(String.valueOf(mqDto.getProperties().get("type"))).getCode());
                     WebsocketDto websocketDto = new WebsocketDto(WebsocketTypeEnum.INVIGILATE_STOP_EXAM.name(), map);
                     webSocketOeServer.sendMessage(websocketDto);
-                    teExamStudentLogService.saveStudentLogInfo(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                    TEExamStudentLog teExamStudentLog = new TEExamStudentLog(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                    teExamStudentLogService.save(teExamStudentLog);
                 }
             });
         } else if (tag.contains(MqTagEnum.OE_HARD_FINISH.name())) {//手动交卷
@@ -125,7 +128,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                     map.put(SystemConstant.MESSAGE, FinishTypeEnum.valueOf(String.valueOf(mqDto.getProperties().get("type"))).getCode());
                     WebsocketDto websocketDto = new WebsocketDto(WebsocketTypeEnum.HAND_STOP_EXAM.name(), map);
                     webSocketOeServer.sendMessage(websocketDto);
-                    teExamStudentLogService.saveStudentLogInfo(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                    TEExamStudentLog teExamStudentLog = new TEExamStudentLog(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                    teExamStudentLogService.save(teExamStudentLog);
                 }
             });
         } else if (tag.contains(MqTagEnum.OE_WARNING_FINISH.name())) {//预警交卷
@@ -141,7 +145,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                     map.put(SystemConstant.BREACH_STATUS, FinishTypeEnum.valueOf(String.valueOf(mqDto.getProperties().get("type"))).getCode());
                     WebsocketDto websocketDto = new WebsocketDto(WebsocketTypeEnum.BREACH_STOP_EXAM.name(), map);
                     webSocketOeServer.sendMessage(websocketDto);
-                    teExamStudentLogService.saveStudentLogInfo(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                    TEExamStudentLog teExamStudentLog = new TEExamStudentLog(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                    teExamStudentLogService.save(teExamStudentLog);
                 }
             });
         } else if (tag.contains(MqTagEnum.OE_IM_CLUSTERING.name())) {//点对点消息
@@ -176,7 +181,41 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                 map.put(SystemConstant.RECORD_ID, recordId);
                 WebsocketDto websocketDto = new WebsocketDto(WebsocketTypeEnum.INVIGILATE_LIVENESS_VERIFY.name(), map);
                 webSocketOeServer.sendMessage(websocketDto);
-                teExamStudentLogService.saveStudentLogInfo(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                TEExamStudentLog teExamStudentLog = new TEExamStudentLog(mqDto.getType().name(), mqDto.getType().getCode(), mqDto.getType().getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+                teExamStudentLogService.save(teExamStudentLog);
+            }
+        }
+        mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);
+        TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
+        tmRocketMessage.setBody(JacksonUtil.parseJson(tmRocketMessage.getBody()));
+        tmRocketMessageService.saveOrUpdate(tmRocketMessage);
+        redisUtil.delete(key, mqDto.getId());
+    }
+
+    /**
+     * oe mobile逻辑
+     *
+     * @param mqDto
+     * @param key
+     * @throws ClassNotFoundException
+     * @throws IllegalAccessException
+     * @throws InstantiationException
+     * @throws NoSuchMethodException
+     * @throws InvocationTargetException
+     */
+    @Override
+    public void execMqOeMobileLogic(MqDto mqDto, String key) {
+        Gson gson = new Gson();
+        ConcurrentHashMap<Long, WebSocketMobileServer> webSocketMap = WebSocketMobileServer.getWebSocketMap();
+        String tag = mqDto.getTag();
+        if (tag.contains(MqTagEnum.EXAM_STOP.name())) {//考试暂停
+            Long recordId = Long.parseLong(String.valueOf(mqDto.getBody()));
+            if (Objects.nonNull(webSocketMap.get(recordId))) {
+                WebSocketMobileServer webSocketMobileServer = webSocketMap.get(recordId);
+                Map map = new HashMap<>();
+                map.put(SystemConstant.RECORD_ID, recordId);
+                WebsocketDto websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_STOP.name(), map);
+                webSocketMobileServer.sendMessage(websocketDto);
             }
         }
         mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);

+ 26 - 35
themis-exam/src/main/java/com/qmth/themis/exam/start/StartRunning.java

@@ -1,14 +1,5 @@
 package com.qmth.themis.exam.start;
 
-import javax.annotation.Resource;
-
-import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.stereotype.Component;
-
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.enums.MqGroupEnum;
@@ -16,18 +7,15 @@ import com.qmth.themis.business.enums.MqTagEnum;
 import com.qmth.themis.business.enums.MqTopicEnum;
 import com.qmth.themis.exam.websocket.WebSocketOeServer;
 import com.qmth.themis.mq.listener.RocketMessageConsumer;
-import com.qmth.themis.mq.templete.impl.CalculateObjectiveScoreConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.ExamRecordInitConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.ExamRecordPersistedConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.ExamRecordUpdateConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.ExamStudentUpdateConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.FaceVerifyConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.LivenessVerifyConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.LogConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.SessionConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.TaskConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.UserLogConcurrentlyImpl;
-import com.qmth.themis.mq.templete.impl.WebsocketUnNormalConcurrentlyImpl;
+import com.qmth.themis.mq.templete.impl.*;
+import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
 
 /**
  * @Description: 服务启动时初始化运行,哪个微服务模块需要则拿此模版去用
@@ -52,46 +40,49 @@ public class StartRunning implements CommandLineRunner {
         /**
          * session
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.sessionConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.WEB.name() + "||" + MqTagEnum.WIN.name() + "||" + MqTagEnum.MAC.name() + "||" + MqTagEnum.WXAPP.name() + "||" + MqTagEnum.IOS.name() + "||" + MqTagEnum.ANDROID.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(SessionConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.SESSION_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.WEB.name() + "||" + MqTagEnum.WIN.name() + "||" + MqTagEnum.MAC.name() + "||" + MqTagEnum.WXAPP.name() + "||" + MqTagEnum.IOS.name() + "||" + MqTagEnum.ANDROID.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(SessionConcurrentlyImpl.class));
         /**
          * userLog
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.userLogConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.USER.name() + "||" + MqTagEnum.STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(UserLogConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.USER_LOG_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.USER.name() + "||" + MqTagEnum.STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(UserLogConcurrentlyImpl.class));
         /**
          * task
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.taskConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_EXPORT.name() + "||" + MqTagEnum.EXAM_PAPER_IMPORT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TaskConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.TASK_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_EXPORT.name() + "||" + MqTagEnum.EXAM_PAPER_IMPORT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TaskConcurrentlyImpl.class));
         /**
          * log
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.logConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXCEPTION_LOG.name() + "||" + MqTagEnum.WARNING_LOG.name() + "||" + MqTagEnum.MONITOR_LOG.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LogConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.LOG_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXCEPTION_LOG.name() + "||" + MqTagEnum.WARNING_LOG.name() + "||" + MqTagEnum.MONITOR_LOG.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LogConcurrentlyImpl.class));
         /**
          * websocket mq start
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.websocketConsumerOeGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.OE_HARD_FINISH.name() + "||" + MqTagEnum.OE_IM_BROADCASTING.name() + "||" + MqTagEnum.OE_IM_CLUSTERING.name() + "||" + MqTagEnum.OE_LIVENESS_VERIFY.name() + "||" + MqTagEnum.OE_MONITOR_FINISH.name() + "||" + MqTagEnum.OE_WARNING_FINISH.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebSocketOeServer.class));
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.websocketConsumerDelayGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebsocketUnNormalConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.WEBSOCKET_OE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.OE_HARD_FINISH.name() + "||" + MqTagEnum.OE_IM_BROADCASTING.name() + "||" + MqTagEnum.OE_IM_CLUSTERING.name() + "||" + MqTagEnum.OE_LIVENESS_VERIFY.name() + "||" + MqTagEnum.OE_MONITOR_FINISH.name() + "||" + MqTagEnum.OE_WARNING_FINISH.name() + "||" + MqTagEnum.EXAM_STOP.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebSocketOeServer.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.WEBSOCKET_DELAY_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebsocketUnNormalConcurrentlyImpl.class));
         /**
          * websocket mq end
          */
         //计算客观分
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.calculateObjectiveScoreGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateObjectiveScoreConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.CALCULATE_OBJECTIVE_SCORE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateObjectiveScoreConcurrentlyImpl.class));
 
         //人脸验证保存
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.faceVerifySaveGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(FaceVerifyConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.FACE_VERIFY_SAVE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(FaceVerifyConcurrentlyImpl.class));
 
         //活体验证保存
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.livenessVerifySaveGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LivenessVerifyConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.LIVENESS_VERIFY_SAVE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LivenessVerifyConcurrentlyImpl.class));
 
         //考试记录数据持久化
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordPersistedGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordPersistedConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_PERSISTED_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordPersistedConcurrentlyImpl.class));
 
         //考试记录数据更新
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordUpdateGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordUpdateConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_UPDATE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordUpdateConcurrentlyImpl.class));
         //考试记录数据初始化
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordInitGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordInitConcurrentlyImpl.class));
-        
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_INIT_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordInitConcurrentlyImpl.class));
+
         //考生数据更新
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examStudentUpdateGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_STUDNET_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamStudentUpdateConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_STUDENT_UPDATE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDNET_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamStudentUpdateConcurrentlyImpl.class));
+
+        //考试断点
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_BREAK_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_BREAK.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamBreakConcurrentlyImpl.class));
         SystemConstant.initTempFiles();
         log.info("服务器启动时执行 end");
     }

+ 44 - 1
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketMobileServer.java

@@ -5,6 +5,7 @@ import com.google.gson.Gson;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
+import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.WebsocketDto;
 import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.enums.MonitorStatusSourceEnum;
@@ -13,11 +14,17 @@ import com.qmth.themis.business.enums.WebsocketTypeEnum;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.business.util.WebsocketUtil;
+import com.qmth.themis.common.contanst.Constants;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.signature.SignatureInfo;
 import com.qmth.themis.common.signature.SignatureType;
+import com.qmth.themis.exam.listener.service.MqOeLogicService;
 import com.qmth.themis.exam.websocketTemplete.WebSocketMobileMessageTemplete;
+import com.qmth.themis.mq.templete.Concurrently;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.common.message.MessageExt;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -42,7 +49,7 @@ import java.util.concurrent.ConcurrentHashMap;
  */
 @ServerEndpoint("/mobile")
 @Component
-public class WebSocketMobileServer {
+public class WebSocketMobileServer implements Concurrently {
     private final static Logger log = LoggerFactory.getLogger(WebSocketMobileServer.class);
     private volatile static ConcurrentHashMap<Long, WebSocketMobileServer> webSocketMap = new ConcurrentHashMap<>();
     /**
@@ -253,5 +260,41 @@ public class WebSocketMobileServer {
     public Long getRecordId() {
         return recordId;
     }
+
+    @Override
+    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
+        RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
+        MqOeLogicService mqOeLogicService = SpringContextHolder.getBean(MqOeLogicService.class);
+        MqDto mqDto = null;
+        try {
+            long threadId = Thread.currentThread().getId();
+            String threadName = Thread.currentThread().getName();
+            for (MessageExt messageExt : msgs) {
+                log.info(":{}-:{} websocket oe Consumer重试次数:{}", threadId, threadName, messageExt.getReconsumeTimes());
+                mqDto = JacksonUtil.readJson(new String(messageExt.getBody(), Constants.CHARSET), MqDto.class);
+                log.info(":{}-:{} websocket oe Consumer接收到的消息:{}", threadId, threadName, JacksonUtil.parseJson(mqDto));
+                int reconsumeTime = messageExt.getReconsumeTimes();
+                if (reconsumeTime >= SystemConstant.MAXRECONSUMETIMES) {
+                    mqOeLogicService.execMqMaxReconsumeTime(mqDto, SystemConstant.MQ_TOPIC_BUFFER_LIST);
+                } else {
+                    if (Objects.nonNull(mqDto.getAck()) && mqDto.getAck().intValue() != SystemConstant.STANDARD_ACK_TYPE && Objects.nonNull(redisUtil.get(SystemConstant.MQ_TOPIC_BUFFER_LIST, mqDto.getId())) && redisUtil.lock(SystemConstant.REDIS_LOCK_MQ_PREFIX + mqDto.getId(), SystemConstant.REDIS_LOCK_MQ_TIME_OUT)) {
+                        mqOeLogicService.execMqOeLogic(mqDto, SystemConstant.MQ_TOPIC_BUFFER_LIST);
+                        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+                    } else {
+                        log.info(":{}-:{} 消息ack未确认,重发", threadId, threadName);
+                        return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("mq websocket oe,消息消费出错", e);
+            return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
+        } finally {
+            if (Objects.nonNull(mqDto)) {
+                redisUtil.releaseLock(SystemConstant.REDIS_LOCK_MQ_PREFIX + mqDto.getId());
+            }
+        }
+        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;//成功
+    }
 }
 

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketOeServer.java

@@ -162,7 +162,7 @@ public class WebSocketOeServer implements Concurrently {
 //                dt = dt.plusSeconds(Long.parseLong(level.replace("s", "")));
                 tranMap.put("timeOut", time);
                 tranMap.put("mqExecTime", dt.toInstant(ZoneOffset.of("+8")).toEpochMilli());
-                MqDto mqDto = new MqDto(MqTopicEnum.themisTopic.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MqTagEnum.OE_UN_NORMAL, MqTagEnum.OE_UN_NORMAL, String.valueOf(this.recordId), this.tranMap, this.sessionId);
+                MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MqTagEnum.OE_UN_NORMAL, MqTagEnum.OE_UN_NORMAL, String.valueOf(this.recordId), this.tranMap, this.sessionId);
                 mqDtoService.assembleSendAsyncDelayMsg(mqDto);
                 //发送延时mq消息end
             }

+ 20 - 12
themis-mq/src/main/java/com/qmth/themis/mq/service/MqLogicService.java

@@ -107,16 +107,24 @@ public interface MqLogicService {
      */
     public void execMqLogLogic(MqDto mqDto, String key);
 
-	/**
-	 * 重新算分
-	 *
-	 * @param mqDto
-	 * @param key
-	 */
-	void execMqCalculateScoreLogic(MqDto mqDto, String key);
-
-	/**
-	 *更新考生信息
-	 */
-	void execMqExamStudentUpdateLogic(MqDto mqDto, String key);
+    /**
+     * 重新算分
+     *
+     * @param mqDto
+     * @param key
+     */
+    void execMqCalculateScoreLogic(MqDto mqDto, String key);
+
+    /**
+     * 更新考生信息
+     */
+    void execMqExamStudentUpdateLogic(MqDto mqDto, String key);
+
+    /**
+     * 考试断点
+     *
+     * @param mqDto
+     * @param key
+     */
+    void execMqExamBreakLogic(MqDto mqDto, String key);
 }

+ 57 - 22
themis-mq/src/main/java/com/qmth/themis/mq/service/impl/MqLogicServiceImpl.java

@@ -2,7 +2,6 @@ package com.qmth.themis.mq.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.gson.Gson;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
@@ -11,6 +10,7 @@ import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.WarningDto;
+import com.qmth.themis.business.dto.WebsocketDto;
 import com.qmth.themis.business.entity.*;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.service.*;
@@ -34,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @Description: mq执行逻辑 impl
@@ -97,6 +98,9 @@ public class MqLogicServiceImpl implements MqLogicService {
     @Resource
     WarningService warningService;
 
+    @Resource
+    MqDtoService mqDtoService;
+
     /**
      * mq最大重试次数逻辑
      *
@@ -127,13 +131,16 @@ public class MqLogicServiceImpl implements MqLogicService {
         Gson gson = new Gson();
         String tag = mqDto.getTag();
         if (tag.contains(MqTagEnum.USER.name())) {
-            teUserLogService.saveUserLogInfo(String.valueOf(mqDto.getBody()), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), mqDto.getObjId());
+            TEUserLog teUserLog = new TEUserLog(String.valueOf(mqDto.getBody()), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), Long.parseLong(String.valueOf(mqDto.getObjId())));
+            teUserLogService.save(teUserLog);
         } else if (tag.contains(MqTagEnum.STUDENT.name())) {
+            TEExamStudentLog teExamStudentLog = null;
             if (Objects.nonNull(mqDto.getProperties())) {
-                teExamStudentLogService.saveStudentLogInfo(String.valueOf(mqDto.getBody()), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), mqDto.getProperties().get("remark"), mqDto.getObjId(), mqDto.getProperties().get("examStudentId"), mqDto.getProperties().get("examRecordId"));
+                teExamStudentLog = new TEExamStudentLog(String.valueOf(mqDto.getBody()), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), String.valueOf(mqDto.getProperties().get("remark")), Long.parseLong(String.valueOf(mqDto.getObjId())), Long.parseLong(String.valueOf(mqDto.getProperties().get("examStudentId"))), Long.parseLong(String.valueOf(mqDto.getProperties().get("examRecordId"))));
             } else {
-                teExamStudentLogService.saveStudentLogInfo(String.valueOf(mqDto.getBody()), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), mqDto.getObjId());
+                teExamStudentLog = new TEExamStudentLog(String.valueOf(mqDto.getBody()), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), SystemOperationEnum.valueOf(String.valueOf(mqDto.getBody())).getCode(), Long.parseLong(String.valueOf(mqDto.getObjId())));
             }
+            teExamStudentLogService.save(teExamStudentLog);
         }
         mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);
         TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
@@ -232,12 +239,20 @@ public class MqLogicServiceImpl implements MqLogicService {
                     ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.BREAK_OFF);
                 }
             }
+            //发送考试暂停mq消息 start
+            MqDto mqDtoExamStop = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STOP.name(), recordId, MqTagEnum.EXAM_STOP, String.valueOf(recordId), String.valueOf(recordId));
+            mqDtoService.assembleSendOneWayMsg(mqDtoExamStop);
+            //发送考试暂停mq消息 end
+
             //增加异常日志
             Long examId = ExamRecordCacheUtil.getExamId(recordId);
             Long examActivityId = ExamRecordCacheUtil.getExamActivityId(recordId);
             Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
+            ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
             TIeInvigilateExceptionInfo tIeInvigilateExceptionInfo = new TIeInvigilateExceptionInfo(examId, examActivityId, recordId, examStudentId, ExceptionEnum.NET_TIME_OUT.getCode(), ExceptionEnum.NET_TIME_OUT, diff);
             tIeInvigilateExceptionInfoService.saveOrUpdate(tIeInvigilateExceptionInfo);
+            TEExamStudentLog teExamStudentLog = new TEExamStudentLog(SystemOperationEnum.BREAK_OFF.name(), SystemOperationEnum.BREAK_OFF.getCode(), SystemOperationEnum.BREAK_OFF.getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
+            teExamStudentLogService.save(teExamStudentLog);
         }
         TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
         Map map = new HashMap();
@@ -365,6 +380,7 @@ public class MqLogicServiceImpl implements MqLogicService {
      * @param key
      */
     @Override
+    @Transactional
     public void execMqExamRecordPersistedLogic(MqDto mqDto, String key) {
         Gson gson = new Gson();
         Map<String, Object> param = (Map<String, Object>) mqDto.getBody();
@@ -475,22 +491,6 @@ public class MqLogicServiceImpl implements MqLogicService {
             Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
             ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
 
-            //先查询之前的断点记录
-            QueryWrapper<TOeExamBreakHistory> tOeExamBreakHistoryQueryWrapper = new QueryWrapper<>();
-            tOeExamBreakHistoryQueryWrapper.lambda().eq(TOeExamBreakHistory::getExamRecordId, recordId);
-            List<TOeExamBreakHistory> tOeExamBreakHistoryList = tOeExamBreakHistoryService.list(tOeExamBreakHistoryQueryWrapper);
-            //删除历史断点缓存
-            if (Objects.nonNull(tOeExamBreakHistoryList) && tOeExamBreakHistoryList.size() > 0) {
-                tOeExamBreakHistoryList.forEach(s -> {
-                    redisUtil.delete(RedisKeyHelper.examBreakCacheKey(s.getId()));
-                });
-            }
-            //增加断点记录
-            TOeExamBreakHistory tOeExamBreakHistory = new TOeExamBreakHistory(ExamRecordCacheUtil.getLastBreakId(recordId), recordId, new Date(), exceptionEnum, exceptionEnum.name());
-            tOeExamBreakHistoryService.save(tOeExamBreakHistory);
-            redisUtil.setForHash(RedisKeyHelper.examBreakCacheKey(tOeExamBreakHistory.getId()), SimpleBeanUtil.objectToMap(tOeExamBreakHistory));
-            teExamStudentLogService.saveStudentLogInfo(SystemOperationEnum.RESUME_PREPARE.name(), SystemOperationEnum.RESUME_PREPARE.getCode(), SystemOperationEnum.RESUME_PREPARE.getCode(), examStudentCacheBean.getStudentId(), examStudentId, recordId);
-
             //增加异常日志
             Long examId = ExamRecordCacheUtil.getExamId(recordId);
             Long examActivityId = ExamRecordCacheUtil.getExamActivityId(recordId);
@@ -530,9 +530,9 @@ public class MqLogicServiceImpl implements MqLogicService {
         tmRocketMessageService.saveOrUpdate(tmRocketMessage);
         redisUtil.delete(key, mqDto.getId());
     }
-    
+
     /**
-     *更新考生信息
+     * 更新考生信息
      */
     @Override
     @Transactional
@@ -546,4 +546,39 @@ public class MqLogicServiceImpl implements MqLogicService {
         tmRocketMessageService.saveOrUpdate(tmRocketMessage);
         redisUtil.delete(key, mqDto.getId());
     }
+
+    /**
+     * 考试断点
+     *
+     * @param mqDto
+     * @param key
+     */
+    @Override
+    @Transactional
+    public void execMqExamBreakLogic(MqDto mqDto, String key) {
+        ExceptionEnum exceptionEnum = ExceptionEnum.valueOf(String.valueOf(mqDto.getBody()));
+        Long recordId = Long.parseLong(mqDto.getObjId());
+
+        //先查询之前的断点记录
+        QueryWrapper<TOeExamBreakHistory> tOeExamBreakHistoryQueryWrapper = new QueryWrapper<>();
+        tOeExamBreakHistoryQueryWrapper.lambda().eq(TOeExamBreakHistory::getExamRecordId, recordId);
+        List<TOeExamBreakHistory> tOeExamBreakHistoryList = tOeExamBreakHistoryService.list(tOeExamBreakHistoryQueryWrapper);
+        //删除历史断点缓存
+        if (Objects.nonNull(tOeExamBreakHistoryList) && tOeExamBreakHistoryList.size() > 0) {
+            tOeExamBreakHistoryList.forEach(s -> {
+                redisUtil.delete(RedisKeyHelper.examBreakCacheKey(s.getId()));
+            });
+        }
+        //增加断点记录
+        TOeExamBreakHistory tOeExamBreakHistory = new TOeExamBreakHistory(ExamRecordCacheUtil.getLastBreakId(recordId), recordId, new Date(), exceptionEnum, exceptionEnum.name());
+        tOeExamBreakHistoryService.save(tOeExamBreakHistory);
+        redisUtil.setForHash(RedisKeyHelper.examBreakCacheKey(tOeExamBreakHistory.getId()), SimpleBeanUtil.objectToMap(tOeExamBreakHistory));
+
+        Gson gson = new Gson();
+        mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);
+        TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
+        tmRocketMessage.setBody(JacksonUtil.parseJson(tmRocketMessage.getBody()));
+        tmRocketMessageService.saveOrUpdate(tmRocketMessage);
+        redisUtil.delete(key, mqDto.getId());
+    }
 }

+ 76 - 0
themis-mq/src/main/java/com/qmth/themis/mq/templete/impl/ExamBreakConcurrentlyImpl.java

@@ -0,0 +1,76 @@
+package com.qmth.themis.mq.templete.impl;
+
+import com.qmth.themis.business.constant.SystemConstant;
+import com.qmth.themis.business.dto.MqDto;
+import com.qmth.themis.business.util.JacksonUtil;
+import com.qmth.themis.business.util.RedisUtil;
+import com.qmth.themis.common.contanst.Constants;
+import com.qmth.themis.mq.service.MqLogicService;
+import com.qmth.themis.mq.templete.Concurrently;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+
+/**
+* @Description: 考试断点
+* @Param:
+* @return:
+* @Author: wangliang
+* @Date: 2020/9/17
+*/
+@Service
+public class ExamBreakConcurrentlyImpl implements Concurrently {
+    private final static Logger log = LoggerFactory.getLogger(ExamBreakConcurrentlyImpl.class);
+
+    @Resource
+    RedisUtil redisUtil;
+    @Resource
+    MqLogicService mqLogicService;
+
+    @Override
+    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
+        MqDto mqDto = null;
+        try {
+            long threadId = Thread.currentThread().getId();
+            String threadName = Thread.currentThread().getName();
+            for (MessageExt messageExt : msgs) {
+                log.debug(":{}-:{} exam break 重试次数:{}", threadId, threadName,
+                        messageExt.getReconsumeTimes());
+                mqDto = JacksonUtil.readJson(new String(messageExt.getBody(), Constants.CHARSET), MqDto.class);
+                log.debug(":{}-:{} exam break 接收到的消息:{}", threadId, threadName,
+                        JacksonUtil.parseJson(mqDto));
+                int reconsumeTime = messageExt.getReconsumeTimes();
+                if (reconsumeTime >= SystemConstant.MAXRECONSUMETIMES) {
+                    mqLogicService.execMqMaxReconsumeTime(mqDto, SystemConstant.MQ_TOPIC_BUFFER_LIST);
+                } else {
+                    if (Objects.nonNull(mqDto.getAck()) && mqDto.getAck().intValue() != SystemConstant.STANDARD_ACK_TYPE
+                            && Objects.nonNull(redisUtil.get(SystemConstant.MQ_TOPIC_BUFFER_LIST, mqDto.getId()))
+                            && redisUtil.lock(SystemConstant.REDIS_LOCK_MQ_PREFIX + mqDto.getId(),
+                            SystemConstant.REDIS_LOCK_MQ_TIME_OUT)) {
+                        log.debug(":{}-:{} 更新db", threadId, threadName);
+                        mqLogicService.execMqExamBreakLogic(mqDto, SystemConstant.MQ_TOPIC_BUFFER_LIST);
+                        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+                    } else {
+                        log.debug(":{}-:{} 消息ack未确认,重发", threadId, threadName);
+                        return ConsumeConcurrentlyStatus.RECONSUME_LATER;// 重试
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("mq 考试断点数据,消息消费出错", e);
+            return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
+        } finally {
+            if (Objects.nonNull(mqDto)) {
+                redisUtil.releaseLock(SystemConstant.REDIS_LOCK_MQ_PREFIX + mqDto.getId());
+            }
+        }
+        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;// 成功
+    }
+}

+ 3 - 3
themis-task/src/main/java/com/qmth/themis/task/enums/QuartzTaskEnum.java

@@ -9,11 +9,11 @@ package com.qmth.themis.task.enums;
  */
 public enum QuartzTaskEnum {
 
-    mqJobName("mqjob"),
+    MQ_JOB_NAME("mqjob"),
 
-    mqJobGroupName("mqjob group"),
+    MQ_JOB_GROUP_NAME("mqjob group"),
 
-    examActivityJobGroupName("考场一次性延时job group");
+    EXAM_ACTIVITY_JOB_GROUP_NAME("考场一次性延时job group");
 
     private QuartzTaskEnum(String code) {
         this.code = code;

+ 3 - 3
themis-task/src/main/java/com/qmth/themis/task/listener/service/impl/MqTaskLogicServiceImpl.java

@@ -77,7 +77,7 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
         for (int i = 0; i < jsonArray.size(); i++) {
             TEExamActivity teExamActivity = JSONObject.toJavaObject((JSON) jsonArray.get(i), TEExamActivity.class);
             if (Objects.equals("delete", oper)) {
-                quartzService.deleteJob(teExamActivity.getCode(), QuartzTaskEnum.examActivityJobGroupName.name());
+                quartzService.deleteJob(teExamActivity.getCode(), QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name());
             } else {
 //                Integer forceFinish = teExam.getForceFinish();
                 Date startTime = teExamActivity.getStartTime();
@@ -108,8 +108,8 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
                         //执行一次性延时任务
                         Map mapJob = new HashMap();
                         mapJob.put("name", activityCode);
-                        quartzService.deleteJob(activityCode, QuartzTaskEnum.examActivityJobGroupName.name());
-                        quartzService.addJob(ExamActivityJob.class, activityCode, QuartzTaskEnum.examActivityJobGroupName.name(), cron, mapJob);
+                        quartzService.deleteJob(activityCode, QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name());
+                        quartzService.addJob(ExamActivityJob.class, activityCode, QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name(), cron, mapJob);
                     }
 //                }
             }

+ 21 - 14
themis-task/src/main/java/com/qmth/themis/task/start/StartRunning.java

@@ -48,56 +48,63 @@ public class StartRunning implements CommandLineRunner {
         log.info("增加mqjob start");
         Map mqMap = new HashMap();
         mqMap.put("name", MqJob.class.getName());
-        quartzService.deleteJob(QuartzTaskEnum.mqJobName.name(), QuartzTaskEnum.mqJobGroupName.name());
-        quartzService.addJob(MqJob.class, QuartzTaskEnum.mqJobName.name(), QuartzTaskEnum.mqJobGroupName.name(), "0 0/2 * * * ?", mqMap);
+        quartzService.deleteJob(QuartzTaskEnum.MQ_JOB_NAME.name(), QuartzTaskEnum.MQ_JOB_GROUP_NAME.name());
+        quartzService.addJob(MqJob.class, QuartzTaskEnum.MQ_JOB_NAME.name(), QuartzTaskEnum.MQ_JOB_GROUP_NAME.name(), "0 0/2 * * * ?", mqMap);
         log.info("增加mqjob end");
 
         /**
          * session
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.sessionConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.WEB.name() + "||" + MqTagEnum.WIN.name() + "||" + MqTagEnum.MAC.name() + "||" + MqTagEnum.WXAPP.name() + "||" + MqTagEnum.IOS.name() + "||" + MqTagEnum.ANDROID.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(SessionConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.SESSION_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.WEB.name() + "||" + MqTagEnum.WIN.name() + "||" + MqTagEnum.MAC.name() + "||" + MqTagEnum.WXAPP.name() + "||" + MqTagEnum.IOS.name() + "||" + MqTagEnum.ANDROID.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(SessionConcurrentlyImpl.class));
         /**
          * userLog
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.userLogConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.USER.name() + "||" + MqTagEnum.STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(UserLogConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.USER_LOG_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.USER.name() + "||" + MqTagEnum.STUDENT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(UserLogConcurrentlyImpl.class));
         /**
          * task
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.taskConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_EXPORT.name() + "||" + MqTagEnum.EXAM_PAPER_IMPORT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TaskConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.TASK_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDENT_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_IMPORT.name() + "||" + MqTagEnum.ROOM_CODE_EXPORT.name() + "||" + MqTagEnum.EXAM_PAPER_IMPORT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(TaskConcurrentlyImpl.class));
         /**
          * log
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.logConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXCEPTION_LOG.name() + "||" + MqTagEnum.WARNING_LOG.name() + "||" + MqTagEnum.MONITOR_LOG.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LogConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.LOG_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXCEPTION_LOG.name() + "||" + MqTagEnum.WARNING_LOG.name() + "||" + MqTagEnum.MONITOR_LOG.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LogConcurrentlyImpl.class));
         /**
          * websocket mq start
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.websocketConsumerDelayGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebsocketUnNormalConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.WEBSOCKET_DELAY_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.OE_UN_NORMAL.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(WebsocketUnNormalConcurrentlyImpl.class));
         /**
          * websocket mq end
          */
         /**
          * quartz mq start
          */
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.quartzConsumerGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(QuartzOrderlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.QUARTZ_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_ACTIVITY.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(QuartzOrderlyImpl.class));
         /**
          * quartz mq end
          */
         //计算客观分
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.calculateObjectiveScoreGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateObjectiveScoreConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.CALCULATE_OBJECTIVE_SCORE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.CALCULATE_OBJECTIVE_SCORE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(CalculateObjectiveScoreConcurrentlyImpl.class));
 
         //人脸验证保存
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.faceVerifySaveGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(FaceVerifyConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.FACE_VERIFY_SAVE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.FACE_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(FaceVerifyConcurrentlyImpl.class));
 
         //活体验证保存
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.livenessVerifySaveGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LivenessVerifyConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.LIVENESS_VERIFY_SAVE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.LIVENESS_VERIFY_SAVE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(LivenessVerifyConcurrentlyImpl.class));
 
         //考试记录数据持久化
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordPersistedGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordPersistedConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_PERSISTED_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordPersistedConcurrentlyImpl.class));
 
         //考试记录数据更新
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordUpdateGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordUpdateConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_UPDATE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordUpdateConcurrentlyImpl.class));
+
         //考试记录数据初始化
-        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.examRecordInitGroup.getCode(), MqTopicEnum.themisTopic.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordInitConcurrentlyImpl.class));
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_RECORD_INIT_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_RECORD_INIT.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamRecordInitConcurrentlyImpl.class));
+
+        //考生数据更新
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_STUDENT_UPDATE_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_STUDNET_UPDATE.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamStudentUpdateConcurrentlyImpl.class));
+
+        //考试断点
+        rocketMessageConsumer.setRocketMQConsumer(nameServer, MqGroupEnum.EXAM_BREAK_GROUP.getCode(), MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXAM_BREAK.name(), MessageModel.CLUSTERING, SpringContextHolder.getBean(ExamBreakConcurrentlyImpl.class));
         SystemConstant.initTempFiles();
         log.info("服务器启动时执行 end");
     }

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor