quartz的Scheduler 动态增加、修改、删除定时任务的方法

变态的PM需求。虽然看上去很简单。但网上资源其实不多,走了不少弯路。分享一下。

 

quartz 的Scheduler 的主要代码

 

public void addSchduleJob(Task entity) throws SchedulerException {
		JobKey jobKeyA = new JobKey(entity.getId()+"");

    	JobDetail jobA = JobBuilder.newJob(com.baidu.lightapp.quartz.schedule.QuartzJob.class).usingJobData("id", entity.getId())
		.withIdentity(jobKeyA).build();

    	Trigger trigger1 = TriggerBuilder
		.newTrigger()
		.withIdentity(entity.getId()+"")
		.withSchedule(
			CronScheduleBuilder.cronSchedule(entity.getTitle()))
		.build();
 
    	Scheduler scheduler = localQuartzScheduler.getScheduler();
    	scheduler.scheduleJob(jobA
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于Quartz和Spring Boot结合实现动态管理定时任务,可以按照以下步骤进行操作: 1. 添加依赖:在Spring Boot项目的pom.xml文件中添加Quartz和Spring Boot的相关依赖。示例: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> ``` 2. 创建定时任务类:编写一个实现Job接口的定时任务类,实现其中的execute方法,该方法定义了定时任务的具体逻辑。示例: ```java public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 执行定时任务逻辑 System.out.println("Hello, Quartz!"); } } ``` 3. 配置定时任务触发器:在Spring Boot的配置文件中配置定时任务的触发器。示例: ```yaml spring: quartz: job-store-type: memory properties: org: quartz: scheduler: instanceName: MyScheduler jobStore: useProperties: true threadPool: threadCount: 3 job-details: myJob: class: com.example.MyJob triggers: myTrigger: job-detail: myJob cron: "0/5 * * * * ?" ``` 4. 启用Quartz:在Spring Boot的启动类上添加@EnableScheduling注解,启用Quartz定时任务。示例: ```java @SpringBootApplication @EnableScheduling public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 5. 动态管理定时任务:通过Quartz的API来实现动态添加、修改删除定时任务的功能。可以在Service或Controller层调用Quartz的相关方法来实现。示例: ```java @Autowired private Scheduler scheduler; public void addJob(String jobName, String jobGroup, String cronExpression) throws SchedulerException { JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity(jobName, jobGroup) .build(); Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(jobName, jobGroup) .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)) .build(); scheduler.scheduleJob(jobDetail, trigger); } public void updateJob(String jobName, String jobGroup, String cronExpression) throws SchedulerException { TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); trigger = trigger.getTriggerBuilder() .withIdentity(triggerKey) .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)) .build(); scheduler.rescheduleJob(triggerKey, trigger); } public void deleteJob(String jobName, String jobGroup) throws SchedulerException { scheduler.deleteJob(JobKey.jobKey(jobName, jobGroup)); } ``` 以上就是使用Quartz和Spring Boot实现动态管理定时任务的基本步骤。您可以根据实际需求进行调整和扩展。希望能对您有所帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值