XXL-JOB
是一个轻量级分布式任务调度平台,开发迅速、学习简单、轻量级、易扩展。本文演示如何使用快速SpringBoot
,搭建XXL-JOB
调度平台。java
xxl-job
详细介绍请移至官网mysql
xxl-job
由调度中心和执行器两部分组成,调度中心负责任务的调度,执行器负责执行任务。调度中心后台,支持配置任务,控制任务,查看任务运行日志等功能。git
git clone git@github.com:xuxueli/xxl-job.gitgithub
目录:/xxl-job/doc/db/tables_xxl_job.sqlweb
目录:/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.propertiessql
cd /xxl-job/xxl-job\xxl-job-admin mvn clean pacakge数据库
war
包,拷贝至tomcat
war
所在目录:/xxl-job/xxl-job\xxl-job-admin/targettomcat
部署目录:/apache-tomcat-9.0.12/webappsapache
tomcat
运行/apache-tomcat-9.0.12/bin目录下的
startup.bat
centos
注意: xxl-job
版本已官网最新版本为准
<!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>1.9.1</version> </dependency>
xxl: job: admin: ### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。 addresses: http://127.0.0.1:8080/xxl-job-admin-1.9.1 executor: ### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。 ### 执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP,手动设置IP时将会绑定Host。单机部署多个执行器时,注意要配置不一样执行器端口; appName: my-xxl-job-executor ip: port: 8889 ### xxl-job log path:执行器运行日志文件存储的磁盘位置,须要对该路径拥有读写权限 logPath: /data/applogs/xxl-job/jobhandler ### xxl-job log retention days:执行器Log文件按期清理功能,指定日志保存天数,日志文件过时自动删除。限制至少保持3天,不然功能不生效; logRetentionDays: -1 ### xxl-job, access token:执行器通信TOKEN,非空时启用 accessToken: server: port: 8081
@Slf4j @Configuration public class XxlJobConfig { @Value("${xxl.job.admin.addresses}") private String addresses; @Value("${xxl.job.executor.appName}") private String appName; @Value("${xxl.job.executor.ip}") private String ip; @Value("${xxl.job.executor.port}") private int port; @Value("${xxl.job.accessToken}") private String accessToken; @Value("${xxl.job.executor.logPath}") private String logPath; @Value("${xxl.job.executor.logRetentionDays}") private int logRetentionDays; @Bean(initMethod = "start", destroyMethod = "destroy") public XxlJobExecutor xxlJobExecutor() { log.info(">>>>>>>>>>> xxl-job config init."); XxlJobExecutor xxlJobExecutor = new XxlJobExecutor(); xxlJobExecutor.setAdminAddresses(addresses); xxlJobExecutor.setAppName(appName); xxlJobExecutor.setIp(ip); xxlJobExecutor.setPort(port); xxlJobExecutor.setAccessToken(accessToken); xxlJobExecutor.setLogPath(logPath); xxlJobExecutor.setLogRetentionDays(logRetentionDays); return xxlJobExecutor; } }
/** * 任务Handler示例(Bean模式) * */ @JobHandler(value="demoJobHandler") @Component public class DemoJobHandler extends IJobHandler { @Override public ReturnT<String> execute(String param) { XxlJobLogger.log("XXL-JOB, Hello World."); return SUCCESS; } }
执行器会定时到调度中心注册,上图说明注册成功;任务调度中心执行管理菜单中能查询全部注册的执行器。
/** * 分片广播任务 */ @JobHandler(value="shardingJobHandler") @Component public class ShardingJobHandler extends IJobHandler { @Override public ReturnT<String> execute(String param) { // 分片参数 ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo(); XxlJobLogger.log("分片参数:当前分片序号 = {0}, 总分片数 = {1}", shardingVO.getIndex(), shardingVO.getTotal()); // 业务逻辑 for (int i = 0; i < shardingVO.getTotal(); i++) { if (i == shardingVO.getIndex()) { XxlJobLogger.log("第 {0} 片, 命中分片开始处理", i); } else { XxlJobLogger.log("第 {0} 片, 忽略", i); } } return SUCCESS; } }
虚拟机中代码经过git同步更新
注意:须要修改虚拟机中,调度中心配置文件,调度中心地址改成本地IP
注意:确保本地与虚拟机的网络环境,保证http协议畅通
编译打包虚拟机代码:mvn clean package
进入目录:/Chapter3-1-4/target
启动服务:java -jar Chapter3-1-4-1.0-SNAPSHOT.jar
启动后,检查调度中心执行器是否注册成功

工欲善其事必先利其器,拥抱开源,解放双手,本文源码。
欢迎关注博主公众号,第一时间推送最新文章