分布式任务调度系统(Quartz动态管理集群部署)

本文探讨了定时任务的本质和应用场景,如时间驱动、批量处理和异步解耦。重点介绍了Quartz作为替代Spring Task的解决方案,因其支持集群部署。讲解了Quartz的JobStore如何将任务信息持久化到MySQL,并提供了引入依赖、DruidConnectionProvider配置、集群配置文件和数据库任务执行表的相关信息。最后提到了后续将要介绍的Elastic-Job和XXL-Job。

定时任务的本质

把我们原来需要手工去做的事情直接交给系统去做,他可以大大的减少人的工作量,为企业创造更多的价值;

定时任务的使用场景

  • 时间驱动:信用卡账单,还款通知
  • 批量处理:银行系统夜间跑批(对账、结账、切换系统营业日期)
  • 异步/解耦:半个小时打包一次(类似MQ的作用–>登记入库–>打包发送)

补充:Spring Task虽然简单易用但不支持集群部署,所以我们接下来主要介绍Quartz的使用教程

引入依赖(以SpringBoot项目为例)

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-quartz</artifactId>
			<version>2.0.8.RELEASE</version>
</dependency>

1.做什么事情(任务/作业):Job JobDetail(一个任务可以绑定多个触发器)

public class InspectionSchedulerExecute implements Job {
   
   

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
   
   
         //需要执行的任务对象,Jobdetail
        JobDetail jobDetail = jobExecutionContext.getJobDetail();
        System.out.println("任务一开始执行")
    }
}
  1. 任务以什么样的规律运行:Trigger触发器
public class TaskConfig {
   
   
    //JobDetail构建任务参数
    public static JobDetail setJobDetail(){
   
   
        JobDetail jobDetail = JobBuilder.newJob(InspectionSchedulerExecute.class)
                .withIdentity("job1","group1")
                .usingJobData("jobId","1")
                .build();
        return jobDetail;
    }

    //Trigger
    public static Trigger setTrigger(SheduExchange job){
   
   
        //判断该任务是否配置开始执行时间(SheduExchange job要执行的任务对象)
        if(job.getStartTime()!=null){
   
   
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            Trigger trigger = null;
            try {
   
   
                date = sdf.parse(job.getStartTime());
                trigger = TriggerBuilder.newTrigger()
                        .withIdentity(job.getId(),job.getTaskName())
                        .startAt(date)
                        .withSchedule(cronSchedule(job.getScope()
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值