为了账号安全,请及时绑定邮箱和手机立即绑定

多个时区中的 Spring @Scheduled 任务

多个时区中的 Spring @Scheduled 任务

潇湘沐 2021-10-27 16:39:25
我有一个在美国(所有时区)运营的客户。我需要在每个时区的凌晨 2 点运行一个任务。此任务需要时区作为输入以获取仅与该区域相关的记录。@Scheduled 注释具有timezone价值,一次在一个时区起作用。我不想通过为每个区域设置 4 个单独的任务来复制代码。
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

使用带有注释@Scheduled 的区域属性,(4.0 版添加)见下面的示例

@Scheduled(cron = "0 10 19 * * FRI", zone = "CET")


查看完整回答
反对 回复 2021-10-27
?
噜噜哒

TA贡献1784条经验 获得超7个赞

一个愚蠢但可行的解决方案是将逻辑的内容放在另一个函数中,并在具有不同日程设置的 2 个不同函数中调用日程


@Scheduled(cron = "0 10 19 * * FRI", zone = "CET") 

public void scheduleCetTask() {

    // code to get parameters

    commonTask(parameters);

}


@Scheduled(cron = "0 10 19 * * FRI", zone = "ABC") 

public void scheduleAbcTask() {

    // code to get parameters

    commonTask(parameters);

}


public void commonTask(parameters) {

}


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 225 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信