SpringBoot 整合 Quartz 多任务动态管理

本文介绍如何在SpringBoot中整合Quartz进行多任务动态管理,避免传统方式的繁琐配置,只需一张表即可。通过创建调度工厂类、定时任务监听类以及相关接口,实现了任务的动态创建和控制。
摘要由CSDN通过智能技术生成

前言

终于抽出时间来写这篇博客了,前段时间用到了调度任务,并且由于要求动态控制,于是就研究了一下,也是遇到了挺多坑,今天来分享一下整合Quartz。
关于Quartz 我在这就不多介绍了,如果有兴趣可以去百度搜索一下。
以往整合Quartz时需要在数据库里面配置对应的表,但是今天我们不那么配置,只需要一张表即可。直奔主题。

建表

create table base_quartz_config
(
    configid     varchar(64)  not null
        primary key,
    quarta_name  varchar(100) null comment '任务名称',
    quarta_group varchar(100) null comment '任务组',
    status       int          null comment '状态',
    quartz_class varchar(200) null comment '类全名',
    remark       varchar(200) null comment '备注',
    createuserid varchar(64)  null comment '创建人',
    expression   varchar(64)  null comment '表达式',
    createtime   datetime     null
)
    collate = utf8_bin;

引入依赖

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

编写代码

创建调度工厂类

MySchedulerFactory.java:

@Service("MySchedulerFactory")
@Component
public class MySchedulerFactory {
   

    private static Logger logger = LoggerFactory.getLogger(MySchedulerFactory.class);

    @Autowired
    SchedulerFactoryBean schedulerFactoryBean;

    @Autowired
    private BaseQuartzService baseQuartzService;

    /**
     * 任务配置读取服务
     */
    @Autowired
    private BaseQuartzService baseQuartzConfigService;

    public void scheduleJobs() throws SchedulerException {
   
        Scheduler scheduler = getScheduler();
        // 为了避免org.quartz.ObjectAlreadyExistsException,在执行前将scheduler进行清理
        scheduler.clear();
        startJob(scheduler);
    }

    /**
     * 获取scheduler
     *
     * @return
     * @author Java最强的男人
     */
    private Scheduler getScheduler() {
   
        return schedulerFactoryBean.getScheduler();
    }


    /**
     * 项目启动 开启任务
     *
     * @param scheduler
     * @author Java最强的男人
     */
    private void startJob(Scheduler scheduler) {
   
        try 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值