首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SchedulingConfigurer/CronTrigger regex没有按预期工作

SchedulingConfigurer/CronTrigger regex没有按预期工作
EN

Stack Overflow用户
提问于 2021-08-09 12:22:28
回答 1查看 343关注 0票数 1

我每5分钟使用SchedulingConfigurer和CronTrigger来触发一个作业,但是代码并不像预期的那样工作。

代码语言:javascript
运行
复制
import java.util.Date;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;

@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {

    @Bean(destroyMethod = "shutdown")
    public Executor taskExecutor() {
        return Executors.newScheduledThreadPool(100);
    }

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.setScheduler(taskExecutor());
        taskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
                System.out.println("Scheduler task is running: " + java.time.LocalDateTime.now());
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                CronTrigger trigger = new CronTrigger("* */5 * * * *");
                return trigger.nextExecutionTime(triggerContext);
            }
        });
}

我遵循下面的regex规则,如spring .中所提到的。

"0 ***“=每天每小时的顶部。

"/10 ** *“=每10秒一次。

"0 0 8-10 * *“=每天8、9及10点钟。

"0 0 6,19 ** *“=每天早上6:00和下午7:00。

" 0 /30 8-10 ** *“=每天8:00、8:30、9:00、9:30、10:00和10:30。

"0 0 9-17 **星期一至五“=每周9至5小时

"0 0 0 25 12 ?“=每个圣诞节午夜

我试过了,但没有运气。

如何每5分钟执行一次cron作业?

为Cron语句创建正则表达式

为Cron语句创建正则表达式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-09 15:47:35

最后,在CronMaker的帮助下,我得到了解决方案。

代码语言:javascript
运行
复制
@Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.setScheduler(taskExecutor());
        taskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
                System.out.println("Scheduler task is running: " + java.time.LocalDateTime.now());
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                CronTrigger trigger = new CronTrigger("0 0/5 * 1/1 * ?");
                return trigger.nextExecutionTime(triggerContext);
            }
        });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68711988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档