xxl-job使用文档
启动调度中心
-
拉取代码
https://github.com/xuxueli/xxl-job.git
,执行初始胡脚本doc/db/tables_xxl_job.sql
-
启动调度中心有两种
-
一是通过源代码SpringBoot方式启动,修改数据库配置信息,运行
XxlJobAdminApplication.java
类 -
二是通过Docker启动(推荐)
-
拉取镜像
docker pull xuxueli/xxl-job-admin:2.3.0
-
启动容器,
-e PARAMS
后面为实际使用得MySQLdocker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \ --spring.datasource.username=root \ --spring.datasource.password=123456" \ -p 9527:8080 -v /tmp:/data/applogs \ --name xxl-job-admin \ -d xuxueli/xxl-job-admin:2.3.0
-
-
启动执行器(可配置多个)
-
在需要添加定时任务得服务中增加
xxl-job-core
依赖,增加如下配置依赖
<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version> </dependency>
配置信息
# xxl-job配置 xxl: job: accessToken: '' admin: addresses: http://localhost:8080/xxl-job-admin # 调度中心地址 executor: address: '' appname: srbmp-job # 执行器名,注意如果不设置执行器名字,则会关闭自动注册 ip: '' # 执行器IP地址,为空默认拿当前服务IP地址 logpath: /data/applogs/xxl-job/jobhandler # 日志存放地址 logretentiondays: 30 # 日志存放时间 port: 9999 # 对调度中心暴露端口
增加配置类
package org.jeecg.modules.job.config; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 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; @Bean public 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; } }
-
添加定时任务
这里暂时只写
Java
方式,有两种BEAN模式(类形式)
// 1、继承JobHandler类 // 2、手动通过如下方式注入到执行器容器 XxlJobExecutor.registJobHandler("demoJobHandler", new DemoJobHandler());
BEAN模式(方法形式,推荐)
// Bean模式任务,支持基于方法的开发方式,每个任务对应一个方法。 // 每个任务只需要开发一个方法,并添加`@XxlJob`注解即可,更加方便、快速。支持自动扫描任务并注入到执行器容器。 public class SampleXxlJob { private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class); /** * 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 } }
项目中实际使用
-
JOB任务开发完成后,登录admin
-
添加执行器(也就是job任务实际的载体),只要配置了
xxl.job.executor.appname
则会自动注册 -
添加job任务,
jobHandler
一定要与你设置的job名字一致 -
job使用,执行一次就是字面意思立即执行一次,启动则是按照你添加任务的CRON时间执行