概述
首先我们要知道什么是XXL-JOB?
官方简介:XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用
XXL-JOB是一个分布式任务调度平台,具有以下特性:
1. 分布式任务调度:XXL-JOB支持将任务分布到多台服务器上进行执行,实现任务的分布式调度和负载均衡。
2. 定时任务管理:XXL-JOB提供了方便的定时任务管理功能,可以设置任务的执行时间、执行间隔和重试次数等参数。
3. 任务监控和日志:XXL-JOB提供了任务执行监控和日志查看功能,可以实时查看任务的执行情况和日志输出。
4. 分片广播任务:XXL-JOB支持将一个任务分片执行,将任务拆分成多个子任务并分发到不同的执行器上并行执行。
5. 失败重试和报警:XXL-JOB支持任务的失败重试机制,可以设置任务失败后的重试次数和重试间隔,并支持任务失败时发送报警通知。
6. 动态调度:XXL-JOB支持动态添加、修改和删除任务,可以通过接口或页面进行任务的动态管理。
7. 执行器管理:XXL-JOB提供了执行器管理功能,可以方便地管理和监控执行器的状态和健康情况。
8. 跨平台支持:XXL-JOB支持在Windows、Linux等不同操作系统上运行,并提供了Java、Python等多种编程语言的任务执行器。
通过这些特性,XXL-JOB可以实现任务的分布式调度、定时任务管理和任务监控等功能,帮助提高任务执行效率和可靠性。
是目前主流的分布式任务调度平台,许多公司的产品业务都有XXL-JOB的接入
使用
首先从GitHub上面将项目clone下来,如果网络问题导致速度慢也可以从Gitee上面拉取
GitHub地址:https://github.com/xuxueli/xxl-job
Gitee地址:https://gitee.com/xuxueli0323/xxl-job
我是从Gitee仓库拉取
打开IDEA克隆拉取代码
克隆成功后,将Maven编译好后项目结构如下
然后运行自带的tables_xxl_job.sql文件,在Navcation中去运行,生成需要的表
打开xxl-job-admin模块,在application.properties中进行后台的配置
注意在数据库地址哪里加上时区属性,否则乱码
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&serverTimezone=UTC
然后我们启动XxlJobAdminApplication类,访问http://localhost:8080/xxl-job-admin
默认账户admn,密码123456
进来就可以看到主界面了
定位到springboot模块下的jobhandler层下面
然后我们编写一个自己的定时任务来测试
package com.xxl.job.executor.service.jobhandler;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.stereotype.Component;
/**
* @author fueen
* 编写自己的定时任务Handler
* 继承IJobHandler
*
*/
@JobHandler(value = "MyJobHandler")
@Component
public class MyJobHandler extends IJobHandler {
/**
* 重写execute方法,里面执行相应的功能
* @param param
* @return
* @throws Exception
*/
@Override
public ReturnT execute(String param) throws Exception {
System.out.println("我们不能失去信仰");
return SUCCESS;
}
}
在任务管理里面新增任务
然后在找到刚刚添加的任务,点击操作里面的启动
可以看到结果,刚刚编写的代码已经被执行了
关于XXL-JOB的基本使用就到这里了,如果在项目中去集成也很简单
在项目中引入依赖
com.xuxueli
xxl-job-core
2.0.1
将xxl-job-executor-sample-springboot这个模块下的XxlJobConfig复制一份到项目中,然后将相关配置设置好即可