springboot @Scheduled單次不執行排查

問題:stat.schedule.cron=0 0 8 * * ? 設置每天8點執行,debug時,看log發現並未執行,但0/5 * * * * ? 每五秒可以正常執行

問題代碼:

properties配置:
stat.schedule.enable=true
stat.schedule.cron=0 0 8 * * ?


@Service
@ConditionalOnExpression(value = "${stat.schedule.enable:false}")
@Slf4j
public class StatService {

    @Bean
    public TaskScheduler poolScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setThreadNamePrefix("poolScheduler");
        scheduler.setPoolSize(5);
        return scheduler;
    }

    @Scheduled(cron = "${stat.schedule.cron}")
    public void test() {
       log.info("cron start");
    }

}

 

排查:

1)從啓動日誌看,已經初始化了線程池

[o.s.s.c.ThreadPoolTaskScheduler.java:165] : [][][] Initializing ExecutorService  'poolScheduler'

2)加@EnableScheduling,@Laze(false)等,問題依舊

解決: @Scheduled(cron = "${stat.schedule.cron}", zone = "GMT+8")

反思:時區問題,默認UTC,實際定時任務已啓動,但未按預期執行。未加zone時,測試stat.schedule.cron=0 0 8 * * ?改爲stat.schedule.cron=0 0 0 * * ?,實際在北京時間早晨8點運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章