> 技术文档 > 保姆级【Springboot整合xxl-job】教程_springboot集成xxl-job

保姆级【Springboot整合xxl-job】教程_springboot集成xxl-job

Springboot整合xxl-job分布式任务调度平台

【前言】

如果是单机模式就可以使用 spring中的@Scheduled注解来设置定时任务,但是在集群中是会出问题的,举例子:当用户下单成功后,后台会发送短信给用户,如果在集群的情况下,就会出现多个后台服务给用户发送短信的情况,造成用户体验感不好。

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

一、xxl-job是什么?

徐雪里开源的分布式定时任务框架

二、搭建调度中心xxl-job-admin项目

1、下载xxl-job-admin项目

xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

2、打开项目,打开tables_xxl_job.sql文件,把里面的sql语句放到自己的数据库去执行

执行成功!

3、修改xxl-job-admin项目配置,修改项目的端口号和数据库连接信息,注意修改成为你的数据库地址、账号和密码

4、先打包xxl-job-core

5、再打包xxl-job-admin

6、本地打包报错信息

Failed to execute goal on project xxl-job-admin: Could not resolve dependencies for project com.xuxueli:xxl-job-admin:jar:3.1.1-SNAPSHOT: The following artifacts could not be resolved: com.xuxueli:xxl-job-core:jar:3.1.1-SNAPSHOT (absent): Could not find artifact com.xuxueli:xxl-job-core:jar:3.1.1-SNAPSHOT -> [Help 1]

把xxl-job父工程的pom.xml文件GPG插件注释掉

7、把打包的项目运行起来

java -jar xxl-job-admin-3.1.1-SNAPSHOT.jar > out.log 2>&1 &

8、登录xxl-job 账号密码:admin/123456,能打开这个页面,xxl-job任务调度中心就部署好了

二、把个人的项目部署到xxl-job

1、先在pom文件导入xxl-job-core插件

2、在yml文件配置xxl-job信息

3、创建xxl-job配置文件
@Configurationpublic class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);​ @Value(\"${xxl.job.admin.addresses}\") private String adminAddresses;​ @Value(\"${xxl.job.admin.accessToken}\") private String accessToken;​ @Value(\"${xxl.job.admin.timeout}\") private int timeout;​ @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; }}
4、在创建一个测试案例

5、在xxl-job页面配置执行器管理

6、新建任务, JobHandler 需要填写跟需要调度的接口注解@XxlJob(\"test\")保持一致

7、点击执行一次

8、在调度日志查看已经成功了!