HiTeam,
我有一个要求,我必须同时运行具有多个时区的计划任务,即晚上9点。我使用了@Schedule注释并添加了repeatable @Schedule annotation.By此单个文件在下午9点在两个时区运行下面是代码。
`@Component公有类logger=LoggerFactory.getLogger(TestSchedular.class);{私有静态最终日志TestSchedular
@Scheduled(cron= "0 0 21 * * ?",zone = "GMT+4")
@Scheduled(cron= "0 0 21 * * ?",zone = "GMT+3")
public void scheduleFixedRateTask() throws Exception {
logger.info("Schedular started..." );
}}`
但是在函数内部,我需要知道它为哪个时区执行currently.On,最基本的是,我必须做我的processing.But的其余部分,我没有找到任何与此相关的东西。有没有办法找到this.Please让我知道。谢谢
发布于 2020-08-14 03:23:49
没有真正的方法可以正确地访问该区域。
相反,您可以将逻辑移动到接受时区的私有方法中,并使用@Scheduled注释注释两个方法,并将相应的时区传递给该方法:
private static final String GMT_PLUS_3 = "GMT+3";
private static final String GMT_PLUS_4 = "GMT+4";
@Scheduled(..., zone = GMT_PLUS_3)
public void scheduleGmt3() {
task(GMT_PLUS_3);
}
@Scheduled(..., zone = GMT_PLUS_4)
public void scheduleGmt4() {
task(GMT_PLUS_4);
}
private void task(String timeZone) {
logger.info("Task started for time zone '{}'", timeZone);
}https://stackoverflow.com/questions/63400707
复制相似问题