Spring整合Quartz实现动态定时器

triggerBuilder. startNow ();

// 触发器时间设定

triggerBuilder.withSchedule(CronScheduleBuilder. cronSchedule (cron));

// 创建Trigger对象

trigger = (CronTrigger) triggerBuilder.build();

// 方式一 :修改一个任务的触发时间

scheduler .rescheduleJob(triggerKey, trigger);

/** 方式一 :调用 rescheduleJob 结束 */

/** 方式二:先删除,然后在创建一个新的Job */

//JobDetail jobDetail = scheduler.getJobDetail(JobKey.jobKey(jobName, jobGroupName));

//Class<? extends Job> jobClass = jobDetail.getJobClass();

//removeJob(jobName, jobGroupName, triggerName, triggerGroupName);

//addJob(jobName, jobGroupName, triggerName, triggerGroupName, jobClass, cron);

/** 方式二 :先删除,然后在创建一个新的Job */

}

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* @param jobName

* @param jobGroupName

* @param triggerName

* @param triggerGroupName

* @Description: 移除一个任务

*/

public void removeJob(String jobName, String jobGroupName,

String triggerName, String triggerGroupName) {

try {

TriggerKey triggerKey = TriggerKey. triggerKey (triggerName, triggerGroupName);

scheduler .pauseTrigger(triggerKey); // 停止触发器

scheduler .unscheduleJob(triggerKey); // 移除触发器

scheduler .deleteJob(JobKey. jobKey (jobName, jobGroupName)); // 删除任务

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* @Description:启动所有定时任务

*/

public void startJobs() {

try {

scheduler .start();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* @Description:关闭所有定时任务

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是关于如何在Spring整合Quartz中手动开启和结束任务的指导。 首先,我们需要获取Scheduler对象,可以通过在Spring配置文件中定义一个SchedulerFactoryBean来获取。这里假设SchedulerFactoryBean的id为schedulerFactory: ``` <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="transactionManager" ref="transactionManager" /> <property name="overwriteExistingJobs" value="true" /> <property name="autoStartup" value="true" /> <property name="quartzProperties"> <props> <prop key="org.quartz.scheduler.instanceName">myScheduler</prop> <prop key="org.quartz.scheduler.instanceId">AUTO</prop> <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop> <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.oracle.OracleDelegate</prop> <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop> <prop key="org.quartz.jobStore.isClustered">true</prop> <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> <prop key="org.quartz.threadPool.threadCount">10</prop> </props> </property> </bean> ``` 接下来,我们可以在代码中获取Scheduler对象: ``` @Autowired private Scheduler scheduler; // 或者 @Resource(name = "schedulerFactory") private Scheduler scheduler; ``` 然后,我们可以手动开启任务,可以通过在代码中调用scheduler的start方法实现: ``` scheduler.start(); ``` 同样,我们可以手动结束任务,可以通过在代码中调用scheduler的shutdown方法实现: ``` scheduler.shutdown(); ``` 需要注意的是,手动开启和结束任务可能会对Quartz原有的任务调度产生影响,因此需要谨慎使用。希望这些信息对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值