Quartz实现动态任务调度及日志记录

本文介绍了如何使用Quartz实现动态任务调度,包括与Spring的集成,允许bean自动注入,手动触发任务执行,以及记录任务执行日志。在实现过程中,通过自定义JobFactory和Job监听器来捕获任务执行情况,并通过jobDataMap传递数据以记录任务详情。文章还提到了如何配置任务调度,包括创建任务配置表,控制任务的增删改查,以及实现具体的Job执行类,确保任务按预期执行。
摘要由CSDN通过智能技术生成

系统需要实现一个任务调度管理的模块,具体要求:

1、能够动态增删改任务进行任务调度,不需要重启服务

2、与Spring配合,实现bean自动注入

3、能够手动触发某个任务立即执行

4、能够记录每个任务的执行开始、结束时间,执行结果,操作人(如果是立即执行时,需要记录操作人,如果是定时触发,记录为SYSTEM)

实现时遇到的难点:

1、将quartz的类与spring结合,能够自动注入到spring

2、记录job执行日志时,需要灵活的记录一些内容,通过jobDataMap来进行数据传递

具体实现步骤:

0、依赖quartz包、spring包、spring-support包等

1、为了能够使用Spring的IOC自动注入,在spring-context文件中配置SchedulerFactoryBean对象

注意,此处用的是springframwork提供的封装好的factorybean

<!-- 定时任务调度 -->
     <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
         <property name="jobFactory" ref="jobFactory"></property>
         <!-- 指定全局任务监听器,用以记录任务执行日志 -->
         <property name="globalJobListeners">
             <list>
                 <ref bean="simpleJobListener"></ref>
             </list>
         </property>
     </bean>
     <!-- END -->

说明:其中jobFactory为扩展AdaptableJobFactory的类,目的是为了使Job的具体实现类能够使用注入到spring中

具体实现为:

import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;
import org.springframework.stereotype.Component;

/**
* @author 
* @date Created time: 2019年10月22日 下午2:39:14
*
*/
@Component
public class JobFactory extends AdaptableJobFactory {
    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;
    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        // 调用父类方法
        Object jobInstance = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Quartz 是一种轻量级的开源定时任务框架,可以实现动态增加和删除定时任务的功能。 在 Quartz 中,我们可以通过创建 Job(任务)和对应的 Trigger(触发器)来实现定时任务的动态增加和删除。通过以下步骤可以实现: 1. 动态增加定时任务:先创建一个 Job 实现 org.quartz.Job 接口,实现其中的 execute 方法,在该方法中编写具体任务的逻辑。之后,创建一个 Trigger(比如 CronTrigger),指定任务执行的时间规则,如每天的某个时间点执行。最后,创建一个 Scheduler(调度器),将 Job 和 Trigger 关联起来,并将定时任务添加到 Scheduler 中,就可以实现动态增加定时任务的功能。 2. 动态删除定时任务:首先,获取到指定的 Trigger 和 Job 的唯一标识符(例如名称和组名),然后通过 Scheduler 的 deleteJob 方法,将指定的 Job 和 Trigger 从 Scheduler 中删除,即可实现动态删除定时任务的功能。 需要注意的是,Quartz 提供了灵活的配置选项,如任务执行时间、重复次数、错过执行机制等,使得定时任务的管理更加便捷。同时,Quartz 还提供了任务监听器和日志记录等功能,可以方便地监控和调试定时任务的执行情况。 总结来说,Quartz 可以通过创建 Job 和 Trigger 的方式,实现动态增加和删除定时任务的功能。这个过程中,需要使用 Scheduler 对象进行任务的调度和管理。使用 Quartz,我们可以轻松地灵活管理和控制定时任务,提高任务的执行效率和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金融码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值