Springboot 整合xxl job
1.下载
Documentation
中文文档
源码下载地址
https://github.com/xuxueli/xxl-job
2.调度中心xxl-job-admin
-
idea导入项目,在目标数据库中执行table_xxl_job.sql初始化xxl-job数据库。
CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci; use `xxl_job`; ................
-
修改xxl-job-admin模块application.properties数据源信息
### xxl-job, datasource,链接地址请保持和所创建的调度数据库的地址一致 spring.datasource.url=jdbc:mysql://116.62.246.132:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=******* spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-
如果已经正确进行上述配置,可将项目编译打包部署。
调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)
默认登录账号 “admin/123456”, 登录后运行界面如下图所示。
3.在项目中创建自己的执行器
参照xxl-job项目中xxl-job-executor-sample-springboot模块在项目创建执行器。
-
在项目中创建xxl-job-executor子模块
-
pom.xml文件中添加核心依赖
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version> </dependency>
-
配置application.properties
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin ### 执行器通讯TOKEN [选填]:非空时启用; xxl.job.accessToken= ### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册 xxl.job.executor.appname=xxl-job-executor-sample ### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。 xxl.job.executor.address= ### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"; xxl.job.executor.ip= ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口; xxl.job.executor.port=9999 ### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径; xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler ### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能; xxl.job.executor.logretentiondays=30
-
参照xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java,在项目中新增执行器config
@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; }
-
创建TycXxlJob.java,编写jobhandler,springboot在方法上添加@XxlJob注解。
@Component public class TycXxlJob { /** * xxl-job test * @throws Exception */ @XxlJob("yeyooJobHandler") public void yeyooJobHandler() throws Exception { XxlJobHelper.log("XXL-JOB, Economic Brain."); XxlJobHelper.log("xxl job test"); } }
-
如果已经正确进行上述配置,可将执行器项目编译打包部署执行器。
4.xxl-job新建任务
-
登录xxl-job调度管理中心,http://ip:port/xxl-job-admin。
-
点击执行器管理,新增执行器,AppName与配置文件xxl.job.executor.appname保持一致。
-
点击任务管理,新增任务,执行器选择上一步新增的执行器,运行模式选BEAN,JobHandler填写yeyooJobHandler,对应TycXxlJob.java中的@XxlJob的value。
-
在任务管理界面点击新增任务“操作”按钮,选择“执行一次”,测试任务调度。
-
点击调度日志查看结果。
2021-08-24 15:55:46 [com.xxl.job.core.thread.JobThread#run]-[130]-[Thread-368] ----------- xxl-job job execute start ----------- ----------- Param: 2021-08-24 15:55:46 [com.yeyoo.tycIo.jobhandler.TycXxlJob#yeyooJobHandler]-[60]-[Thread-368] XXL-JOB, Economic Brain. 2021-08-24 15:55:46 [com.yeyoo.tycIo.jobhandler.TycXxlJob#yeyooJobHandler]-[61]-[Thread-368] xxl job test 2021-08-24 15:55:46 [com.xxl.job.core.thread.JobThread#run]-[176]-[Thread-368] ----------- xxl-job job execute end(finish) ----------- ----------- Result: handleCode=200, handleMsg = null 2021-08-24 15:55:46 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[197]-[xxl-job, executor TriggerCallbackThread] ----------- xxl-job job callback finish.
5.其他项目引用
-
pom.xml文件添加依赖引入xxl-job-executor子模块
<dependency> <groupId>com.xxx.xxx</groupId> <artifactId>xxl-job-executor</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
-
application.yml配置文件添加执行器信息
xxl: job: admin: addresses: http://127.0.0.1:8080/xxl-job-admin # 调度中心部署地址 。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; accessToken: #执行器通讯TOKEN,非空时启用; executor: appname: yeyoo-xxl-job-executor-sample #执行器AppName address: #执行器注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。 ip: #执行器ip,为空表示自动获取IP。 port: 9999 #执行器端口 logpath: /data/applogs/xxl-job/jobhandler #执行器运行日志文件存储磁盘路径 logretentiondays: 30 #执行器日志文件保存天数
-
创建项目定时任务。
-
登录xxl-job调度管理中心添加任务,设置cron表达式,启动定时任务。