定时器时间存于redis可以随意更改

@Lazy(false)
@Component
@EnableScheduling
@Slf4j
public class CustomTask implements SchedulingConfigurer {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    private String cron = "0/5 * * * * ?";

    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
        TriggerTask triggrtTask = new TriggerTask(
            () -> {
                //需要处理的业务逻辑
       
            },
            // 设置触发器,传入的TriggerContext类型,返回的是Date类型
            triggerContext -> {
                try{
                    String customCron = redisTemplate.opsForValue().get("orderCron");
                    if(customCron==null||customCron.isEmpty()){
                        customCron = cron;
                    }
                    // 2.3 返回执行周期(Date)
                    return new CronTrigger(customCron).nextExecutionTime(triggerContext);
                }catch (Exception e){
                    e.printStackTrace();
                    // 2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }

            });
        scheduledTaskRegistrar.addTriggerTask(triggrtTask);
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容