问题描述
public abstract class OrderServiceJob extends QuartzJobBean{
@Autowired
private Scheduler scheduler;
public void scheduleCronJob(String cronExpression,Class className) {
JobDetail jobDetail = buildJobDetail(className);
Trigger trigger = buildCronJobTrigger(jobDetail,cronExpression);
try {
scheduler.scheduleJob(jobDetail,trigger);
log.info(String.format("job scheduled by class %s",this.getClass().getSimpleName()));
}
catch (SchedulerException e) {
String errorMsg = String.format("job scheduled by class %s",this.getClass().getSimpleName());
log.error(errorMsg,e);
NewRelic.noticeError(e);
}
}
private JobDetail buildJobDetail(Class className) {
return JobBuilder.newJob(className)
.withIdentity(UUID.randomUUID().toString(),this.getClass().getSimpleName())
.withDescription(this.getClass().getName())
.storeDurably()
.build();
}
private Trigger buildCronJobTrigger(JobDetail jobDetail,String cronExpression){
return TriggerBuilder.newTrigger()
.withIdentity(jobDetail.getKey().getName(),jobDetail.getKey().getName() + "-triggers")
.withDescription(jobDetail.getKey().getName() + "-triggers")
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
}
}
org:
quartz:
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 25
threadPriority: 5
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
useProperties: false
dataSource: quartzDataSource
tablePrefix: QRTZ_
isClustered: true
clusterCheckinInterval: 20000
dataSource:
quartzDataSource:
driver: com.MysqL.cj.jdbc.Driver
URL: ${datasource.order-service.url}
user: ${datasource.order-service.username}
password: ${datasource.order-service.password}
以下代码能够使用 Quartz 安排 cron,但不能插入根据 Quartz 文档创建的表,我有多个服务器,并且希望一次在每台机器上运行一个作业,即轮换,我们如何做到这一点并插入石英模式中的记录
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)