簡體   English   中英

Spring Boot項目中的作業計划庫

[英]Job Schedule Library in a Spring Boot Project

我正在尋找一個調度程序庫,該庫可以執行在一天的特定時間調用其他REST API的簡單任務。 請告知哪個是在Spring Boot項目中使用的好庫。 我基本上是在尋找一種將作業配置信息自動記錄到DB並具有用於檢查作業狀態的UI界面的工具(首選但不是強制性的)。

我確實遇到過這個問題,但是由於除Quartz之外沒有其他經驗,所以我無法撥打電話: http : //blog.dreamcss.com/tools/java-based-job-scheduler/

注意 :我在先前的項目中確實使用了Quartz,但是由於沒有將與作業相關的信息記錄到DB中而遇到問題,因此遇到了很多問題。 具體來說,它不會將有關上次運行時間以及上一次作業是否成功完成的正確信息記錄到數據庫中。 另外,我已經看到,如果以前的作業需要更長的時間才能完成,則Quartz中的作業會被阻塞。

在春季啟動中,您有一個用於計划的嵌入式簡單引擎。

例如,在@Component中使用@Scheduled批注。 並且不要記得通過使用@EnableScheduling注釋啟用調度。

您可以在本文的spring.io鏈接中閱讀有關此主題的更多信息。

使用觸發器,您可以即時計算下一次執行時間。

這樣的事情應該可以解決問題(從Javadoc改編為@EnableScheduling):

@Configuration
@EnableScheduling
public class MyAppConfig implements SchedulingConfigurer {

    @Autowired
    Environment env;

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }

    @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() {
                        myBean().getSchedule();
                    }
                },
                new Trigger() {
                    @Override public Date nextExecutionTime(TriggerContext triggerContext) {
                        Calendar nextExecutionTime =  new GregorianCalendar();
                        Date lastActualExecutionTime = triggerContext.lastActualExecutionTime();
                        nextExecutionTime.setTime(lastActualExecutionTime != null ? lastActualExecutionTime : new Date());
                        nextExecutionTime.add(Calendar.MILLISECOND, env.getProperty("myRate", Integer.class)); //you can get the value from wherever you want
                        return nextExecutionTime.getTime();
                    }
                }
        );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM