本文主要是介绍轻量级分布式任务调度平台:XXL-JOB,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 1 介绍
- 1.1 特性
- 1.2 整体架构
- 2 快速导入
- 2.1 测试工程导入
- 2.1 初始化数据库
- 2.3 Docker安装任务管理中心
- 3 XXL-JOB任务注册测试
- 3.1 引入xxl-job依赖
- 3.2 配置xxljob相关信息
- 3.3 定义定时任务执行方法
1 介绍
XXL-JOB是一个轻量级分布式任务调度平台
最大的特点就是简单易用
1.1 特性
1.2 整体架构
XXL-Job的调度中心可以监控多台机器下的任务执行状态,任务如果想被调度中心所管理,则需要进行任务注册,调度中心对任务进行任务状态心跳检查
总体来说,调度中心可以管理任务,配置任务计划,监测任务状态等等。
2 快速导入
2.1 测试工程导入
源码可以直接去官网下载XXL-JOB官网
之后导入idea:
2.1 初始化数据库
因为任务调度中心需要记录每个任务的工作状态,所以需要给它提供数据库
直接导入即可:
2.3 Docker安装任务管理中心
拉取xxl-job-admin任务中心镜像:
docker pull xuxueli/xxl-job-admin:2.3.0
启动xxl-job任务中心容器:
//在指定目录构建xxldata目录,然后运行如下docker指令:
docker run -e PARAMS=“–spring.datasource.url=jdbc:mysql://192.168.65.150:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC --spring.datasource.username=root --spring.datasource.password=1234” -p 8099:8080 -v $PWD/xxldata:/data/applogs --name=xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0
访问容器服务:
http://192.168.200.128:8093/xxl-job-admin
直接登录即可 初始账号密码为 admin 123456
3 XXL-JOB任务注册测试
3.1 引入xxl-job依赖
<!-- xxl-job-core -->
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>${project.parent.version}</version>
</dependency>
3.2 配置xxljob相关信息
在配置文件xml里面进行配置信息:
# web服务端口
server.port=8081
# no web
#spring.main.web-environment=false
# log config
logging.config=classpath:logback.xml
#定义注册地址
xxl.job.admin.addresses=http://192.168.65.150:8099/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=
#任务工程的名字
xxl.job.executor.appname=xxl-job-exec-test
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=
#配置监控平台与当前任务的心跳检查端口
xxl.job.executor.port=9999
# 日志文件路径
xxl.job.executor.logpath=./logs
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30
配置完毕后,工程底层通过XxlJobConfig配置类加载配置信息,实现xxljob相关资源的初始化工作:(代码不必深究)
/*** xxl-job config** @author xuxueli 2017-04-28*/
@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.appname}")private String appname;@Value("${xxl.job.executor.address}")private String address;@Value("${xxl.job.executor.ip}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;/*** Spring整合xxljob任务执行器* 该执行器可以调用当前工程下的子任务* @return*/@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
3.3 定义定时任务执行方法
/*** 1、简单任务示例(Bean模式)*/@XxlJob("demoJobHandler")public void demoJobHandler() throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");for (int i = 0; i < 5; i++) {XxlJobHelper.log("beat at:" + i);TimeUnit.SECONDS.sleep(2);}// default success}
// ......此处省略其余代码/*** 5、生命周期任务示例:任务初始化与销毁时,支持自定义相关逻辑;*/@XxlJob(value = "demoJobHandler2", init = "init", destroy = "destroy")public void demoJobHandler2() throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");}public void init(){logger.info("init");}public void destroy(){logger.info("destory");}
@XxlJob中的value值就是定时任务的一个标识,注解作用的方法就是定时任务要执行逻辑的逻辑方法;
这篇关于轻量级分布式任务调度平台:XXL-JOB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!