package cn.lihu.jh.module.ecg.config; import cn.lihu.jh.module.ecg.Utils; import cn.lihu.jh.module.ecg.service.queue.QueueService; import cn.lihu.jh.module.infra.api.config.ConfigApi; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import javax.annotation.Resource; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.concurrent.Executors; import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY; @Configuration @EnableScheduling public class DynamicSchedulingConfig implements SchedulingConfigurer { @Resource private ConfigApi configApi; @Resource private QueueService queueService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(Executors.newScheduledThreadPool(1)); String strOpeningTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY); LocalTime openingTime = Utils.parseOpeningTime(strOpeningTime); String cronExpression = String.format("0 %d %d * * ?", openingTime.getMinute(), openingTime.getHour()); System.out.println(cronExpression); taskRegistrar.addCronTask(() -> { System.out.println("Dynamic Task executed at: " + System.currentTimeMillis()); queueService.startBiz(); }, cronExpression); } }