Java 有没有办法将参数传递给quartz cron作业?
我在quartz(springboot应用程序)中有一个cron任务。 我已经为调度器、触发器、cron作业和所有其他bean创建了bean。 作业的目的是基于指定的cron表达式运行。但是对于每一次新的作业执行,我希望将特定于该作业的一些数据传递给作业细节对象。 但目前,当我尝试在JobDetailFactoryBean中传递此类数据时,它只创建了一次(这是第一次),对于作业的所有后续执行,都会传递相同的陈旧数据。每次执行作业时,我都要传递新的数据。Java 有没有办法将参数传递给quartz cron作业?,java,spring,spring-boot,quartz-scheduler,quartz,Java,Spring,Spring Boot,Quartz Scheduler,Quartz,我在quartz(springboot应用程序)中有一个cron任务。 我已经为调度器、触发器、cron作业和所有其他bean创建了bean。 作业的目的是基于指定的cron表达式运行。但是对于每一次新的作业执行,我希望将特定于该作业的一些数据传递给作业细节对象。 但目前,当我尝试在JobDetailFactoryBean中传递此类数据时,它只创建了一次(这是第一次),对于作业的所有后续执行,都会传递相同的陈旧数据。每次执行作业时,我都要传递新的数据。 我怎样才能做到这一点呢?也许你可以使用某种
我怎样才能做到这一点呢?也许你可以使用某种回调?所以在你的
工作中类似这样的事情
:
@Resource
private MyJobJobdataProvider dataProvider;
public void execute(JobExecutionContext context) throws JobExecutionException {
JobData data = dataProvider.getData();
/// configure job with the data before actual exection ...
}
其中myjobdataprovider
将是提供此数据的任何组件:
@Component
public MyJobJobdataProvider {
public Data getData() {
//...
}
public void setData(Data data) {
//...
}
}
因此,与其尝试设置新数据,不如让作业在每次执行之前查询新数据。这就是作业数据映射的用途。请检查方法和API 如果要在运行时以编程方式修改作业数据映射参数,有两个选项:
根据您的第一点,我的理解是,它将编辑已创建的单个作业的作业数据映射。我想要的是,对于作业的每一次新执行,只需要一些与该执行相关的特定数据。我希望将数据关联到该特定作业实例的原因是,如果该作业失败并稍后尝试恢复自身,那么它应该将其相关数据取回。