我正在开发一个调度应用程序,其中用户定义了一些在指定时间运行的作业。当作业被触发时,它应该调用一个RESTFUL URL。这些作业还具有重试次数和超时设置等属性。我受阻于两点:
CronTrigger
被表示并以字符串形式存储在数据库中,但问题是如何将其转换为CronTrigger
并在以后用于创建TaskScheduler
?
应用程序应从数据库中读取存储库中的所有信息,并在启动时构建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;
}
答案 0 :(得分:1)
我建议不要使用Quartz Scheduler来代替自己的解决方案。使用Spring Boot(2或更高版本),由于添加了对Quartz的支持,因此更加简单(请参阅reference guide)。
Quartz具有开箱即用的支持,用于将此类信息存储在数据库中。它将使用该信息来触发作业。基本上可以免费获得1和2。
缺点是您必须使用@Scheduled
以外的其他东西来安排工作。