67,515
社区成员
发帖
与我相关
我的任务
分享
public void reScheduleJob() throws SchedulerException {
String nowDate=DateUtils.toString(new Date(),DateUtils.ORA_DATE_TIMES3_FORMAT);
// 运行时可通过动态注入的scheduler得到trigger,注意采用这种注入方式在有的项目中会有问题,如果遇到注入问题,可以采取在运行方法时候,获得bean来避免错误发生。
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger("cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = "0 0 7 * * ?";//
//每10s执行一次;
//String dbCronExpression = "0/59 * * * * ?";
String originConExpression = trigger.getCronExpression();
//if (!originConExpression.equalsIgnoreCase(dbCronExpression)) {
//获取待提醒的plantask任务
// 如果触发时间不相同
if(!originConExpression.equalsIgnoreCase(dbCronExpression)){
try {
//我的方法
trigger.setCronExpression(dbCronExpression);
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP,trigger);
} catch (Exception e) {
System.out.println("------------------- ParseException Error! -------------------");
e.printStackTrace();
}
}
// }
// 执行task
System.out.println("Quartz 定时任务启动成功!"+nowDate);
}
<bean id="quartzTask" class="com.platform.application.secureprocess.action.PlanTaskQuartz">
<property name="scheduler" ref="schedulerFactory" />
</bean>
<bean id="jobtask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="quartzTask" />
<property name="targetMethod" value="reScheduleJob" />
<property name="concurrent" value="false" />
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobtask" />
<!-- 默认的时间为 -->
<property name="cronExpression">
<value>0 0/2 * * * ?</value>
</property>
</bean>
<bean id="schedulerFactory"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
JobDetail job = JobBuilder.newJob(VoteJob.class).withIdentity("job"+i,"group"+i).build();
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger()
.startAt(runTime)
.withIdentity("trigger"+i,"group"+i)
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(120).withRepeatCount(pro.getCount()))
.build();
scheduler.scheduleJob(job, trigger);
withRepeatCount 设置为1