java - 如何为多个 session 实现 cron 作业,每个 session 都有自己的时间间隔

标签 java spring cron

我想利用 spring cron 注释在每天三个不同的 session 中的特定时间间隔内每分钟运行一个特定服务。

例如: 第一节:上午 8:15 - 中午 12:36 第二场:中午 12:40 - 下午 3:11 第三节:下午 3:20 - 4:35。

如何设置此特定示例的 cron 表达式?

我已经在 Oracle 文档中检查过这一点,这是我遇到的最接近的实现

“0 0/5 14,18 * * ?从下午 2:00 开始到下午 2:55 结束,每 5 分钟触发一次,并且从下午 6:00 开始到下午 6:55 结束,每 5 分钟触发一次,每天”

没有不同时间和不同 session 之间间隔的实例

@Scheduled(cron = "0 29-35 11,12 * * ?")
 public static void testCron() {
   DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   Date date = new Date(); 
   System.out.println("testing cron per minute " + dateFormat.format(date)); }

从上面的测试代码来看,它打印了 11:29 到 11:35 之间的注释,但没有打印 11:35 之后的注释。下一个打印输出是从 12:29 开始,依此类推。

最佳答案

为了实现这一点,您可以使用多个 @Scheduled 注释来注释您的方法,同时提高议程的可读性和易用性。

@Scheduled(cron = "0 15-36 8-12 * * ?")
@Scheduled(cron = "0 40-11 12-15 * * ?")
@Scheduled(cron = "0 20-35 15-16 * * ?")
 public static void testCron() {
   DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   Date date = new Date(); 
   System.out.println("testing cron per minute " + dateFormat.format(date)); }

您可能有兴趣使用 crontab.guru 测试一些 crontab 配置。在线工具。

关于java - 如何为多个 session 实现 cron 作业,每个 session 都有自己的时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57394739/

相关文章:

java - Junit:如何测试从属性文件中读取属性的方法

java - 类通过它自己

java - 无法写入内容: failed to lazily initialize a collection of role using OpenEntityManagerInViewFilter

java - Spring Batch 2.2.3 异常 - 访问字段 'serialVersionUID' 不应该是非法的

php - Cronjobs - 网络托管商可以禁用它们吗?

linux - XDG_SESSION_COOKIE 环境变量有什么用?

java - 按钮的构造函数

java - Stream().map() 结果作为 Collectors.toMap() 值

java - Spring REST 如何以不同方式验证请求主体?

php - 将 curl 安装到 PHP cli