SpringBoot使用XXL-JOB分布式任务调度平台
一、概述
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
官方github:https://github.com/xuxueli/xxl-job
本文只讲解了springboot怎么使用xxl-job,有其他疑问的话可以给我留言哦!
二、运行调度中心xxl-job-admin
- 从上面github上将xxl-job源码下载下来
- 创建数据库:xxl_job,并运行xxl-job-master\doc\db\tables_xxl_job.sql文件。
- 使用idea或Eclipse打开xxl-job-master,并配置xxl-job-admin resources\application.properties文件,将datasource数据源指向上面创建的数据库地址,和数据库的用户名密码。
- 运行xxl-job-admin XxlJobAdminApplication.java,然后再浏览器中输入下面地址即可看到xxl-job的管理界面,默认用户名:admin, 密码:123456
localhost:8080/xxl-job-admin
三、创建执行器和任务
-
在任务执行管理中点击 “新增” 按钮 添加加执行器:
-
机器地址中的127.0.0.1:9999,便是客户端的地址,通信端口使用9999,这里也可以配多个客户端以逗号隔开。s
-
然后再任务管理中新增任务:
其中执行器便是前面创建的,因为只有一台客户端路由策略选什么已经无所谓了,如果是集群可以选择轮询。Corn便是更具Corn表达式定义的任务执行模式,这个可以去下面网站生成:
https://cron.qqe2.com/
四、SpringBoot集成xxl-job
-
pom
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.2.0</version> </dependency>
-
application.yml
xxl: job: admin: # 执行器注册地址 addresses: http://127.0.0.1:8080/xxl-job-admin accessToken: executor: # 执行器AppName appname: testapp address: ip: # 执行器注册端口 port: 9999 # 执行器执行日志文件输出路径 logpath: xxl-job/jobhandler # 日志保留天数 logretentiondays: 30
-
配置类XxlJobConfig
@Configuration public class XxlJobConfig { @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() { 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; } }
-
TestJobHandler处理任务类
@Component public class TestJobHandler { @XxlJob("testjobhandler") public ReturnT<String> demoJobHandler(String param) throws Exception{ System.out.println("收到通知:"+param); return ReturnT.SUCCESS; } }
-
启动xxl-job网页中的任务,并启动springboot项目,可以看到控制台已经开始运行job:
当然也可以更改其他的Cron表达式看看效果,或开启多个客户端形成集群更改路由策略看下不同的效果。