如何在应用程序启动时将CronTrigger信息存储到存储库中并加载TaskScheduler?

时间:2018-07-27 12:11:01

标签: spring spring-boot spring-data-jpa

我正在开发一个调度应用程序,其中用户定义了一些在指定时间运行的作业。当作业被触发时,它应该调用一个RESTFUL URL。这些作业还具有重试次数和超时设置等属性。我受阻于两点:

  1. CronTrigger被表示并以字符串形式存储在数据库中,但问题是如何将其转换为CronTrigger并在以后用于创建TaskScheduler

  2. 应用程序应从数据库中读取存储库中的所有信息,并在启动时构建TaskScheduler,但我不知道该如何实现。

实体

@Entity
public class ScheduledJob {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    private String cronTrigger;
    private String URL;
    private int numRetries;
    private int timeout;
}

1 个答案:

答案 0 :(得分:1)

我建议不要使用Quartz Scheduler来代替自己的解决方案。使用Spring Boot(2或更高版本),由于添加了对Quartz的支持,因此更加简单(请参阅reference guide)。

Quartz具有开箱即用的支持,用于将此类信息存储在数据库中。它将使用该信息来触发作业。基本上可以免费获得1和2。

缺点是您必须使用@Scheduled以外的其他东西来安排工作。