SchedulingConfig.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.nokia.alarm.config;
  2. import java.util.Date;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.scheduling.annotation.SchedulingConfigurer;
  7. import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
  8. import org.springframework.scheduling.config.ScheduledTaskRegistrar;
  9. import com.nokia.alarm.service.AlarmSaveToFileService;
  10. import lombok.extern.slf4j.Slf4j;
  11. @Slf4j
  12. @Configuration
  13. public class SchedulingConfig implements SchedulingConfigurer {
  14. @Value("${scheduling.scheduler.pool.size:1}")
  15. private int poolSize;
  16. private final AlarmSaveToFileService service;
  17. public SchedulingConfig(AlarmSaveToFileService service) {
  18. this.service = service;
  19. }
  20. @Bean
  21. public ThreadPoolTaskScheduler taskScheduler() {
  22. // 使用最常用的ThreadPoolTaskScheduler
  23. ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
  24. // 线程数
  25. taskScheduler.setPoolSize(poolSize);
  26. taskScheduler.setRemoveOnCancelPolicy(true);
  27. taskScheduler.setThreadNamePrefix("taskSchedulerThreadPool-");
  28. log.info("已完成 ThreadPoolTaskScheduler 配置, poolSize = {}", poolSize);
  29. return taskScheduler;
  30. }
  31. @Override
  32. public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
  33. taskRegistrar.setScheduler(taskScheduler());
  34. taskRegistrar.addCronTask(() -> {
  35. Date date = new Date();
  36. try {
  37. service.getHttpSave(date);
  38. service.getHttpUpdate(date);
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. // 延时 2 分钟重新调度一下
  42. Date newDate = new Date(date.getTime() + 2 * 60000);
  43. taskRegistrar.getScheduler().schedule(() -> {
  44. service.getHttpSave(newDate);
  45. service.getHttpUpdate(newDate);
  46. }, newDate);
  47. }
  48. }, "0 */5 * * * ?");
  49. }
  50. }