Springboot+quartz实现动态分布式定时任务

本文介绍了如何在Springboot项目中结合Quartz实现动态的分布式定时任务。首先,从Quartz官网下载包并根据提供的SQL创建数据库表。接着,引入相关依赖并配置quartz.properties文件。然后,进行Quartz的初始化配置,并将任务工厂注入到Spring。接着,创建任务调度管理和具体执行的Job。最后,编写启动Job的类。值得注意的是,任务会自动写入数据库,多台服务中,第一台服务负责执行任务,当其停止时,其他服务会接管。
摘要由CSDN通过智能技术生成

首先quartz本身是支持分布式的,通过表来管理各节点之间的关系。

1.去quartz官网下载最新的包 http://www.quartz-scheduler.org/

2、下载之后解压,进入如下目录,创建数据库表

quartz-2.2.3-distribution\quartz-2.2.3\docs\dbTables(选择对应的数据库SQL)

11张表功能说明:

3、创建springboot项目

<!--quartz依赖-->

        <dependency>

            <groupId>org.quartz-scheduler</groupId>

            <artifactId>quartz</artifactId>

        </dependency>

        <dependency>

            <groupId>org.quartz-scheduler</groupId>

            <artifactId>quartz-jobs</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context-support</artifactId>

        </dependency>

4.创建 quartz.properties配置文件

org.quartz.scheduler.instanceId=AUTO
org.quartz.scheduler.makeSchedulerThreadDaemon=true
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.makeThreadsDaemons=true
#线程数量
org.quartz.threadPool.threadCount:20
#线程优先级
org.quartz.threadPool.threadPriority:5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix=QRTZ_
#特别注意:此处是quartz的数据源,报错就debug跟踪一下查看dbName
org.quartz.jobStore.dataSource = springTxDataSource.schedulerFactoryBean
#加入集群
org.quartz.jobStore.isClustered=true
#容许的最大作业延
org.quartz.jobStore.misfireThreshold=25000
#调度实例失效的检查时间间隔
org.quartz.jobStore.clusterCheckinInterval: 5000

5. quartz的初始化配置

@Configuration
public class SchedulerConfig {
    // 配置文件路径
    private static final String QUARTZ_CONFIG = "/quartz.properties";
    // 按照自己注入的数据源自行修改
    @Qualifier("writeDataSource")
    @Autowired
    private DataSource dataSource;

    @Autowired
    private AutoWiredSpringBeanToJobFactory autoWiredSpringBeanToJobFactory;

    /**
     * 从quartz.properties文件中读取Quartz配置属性
     * @return
     * @t
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值