要将xxl-job集成到spring boot项目中,可以按照以下步骤进行操作:
首先,从Gitee拉取xxl-job的源码,并将其配置为Docker镜像部署到服务器上。
# 执行Maven打包 mvn clean install构建Docker镜像,镜像名称中不允许使用下划线
docker build -t xxl-job:latest .
接下来,在自己的Spring Boot项目中创建一个新的任务执行器,首先需要在项目的pom.xml文件中引入xxl-job的Maven依赖。
com.xuxueli xxl-job-core ${project.parent.version}
然后,在项目的配置文件(如application.yml或application.properties)中添加xxl-job的配置信息。
xxl: job: admin: addresses: https://www.php.cn/link/7ece221bf3f5dbddbe3c2770ac19b419 accessToken: executor: appname: xxl-job-executor-sample address: ip: port: 8082 logpath: /data/applogs/xxl-job/jobhandler logretentiondays: 30
在项目的resources目录下添加logback.xml文件,用于配置日志输出。
logback %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n ${log.path} ${log.path}.%d{yyyy-MM-dd}.zip %date %level [%thread] %logger{36} [%file : %line] %msg%n
创建一个名为XxlJobConfig的配置类,用于初始化xxl-job执行器。
package com.cgd.xxljobexecutor.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; }
/**
- 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
- 1、引入依赖:
org.springframework.cloud spring-cloud-commons ${version} - 2、配置文件,或者容器启动变量
- spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
- 3、获取IP
- String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}
最后,编写一个简单的定时任务示例。
mallcloud商城下载mallcloud商城基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离vue的企业级微服务敏捷开发系统架构。并引入组件化的思想实现高内聚低耦合,项目代码简洁注释丰富上手容易,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提
package com.cgd.xxljobexecutor.xxlJob;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import org.springframework.stereotype.Component;
/**
- @author chengd
- @version 1.0
- @date 2021/5/19 15:24
*/
@Component
public class PushJob {
@XxlJob("PushJobHandler")
public ReturnT
PushJobHandler(String param){ ReturnT returnT = new ReturnT<>(); returnT.setCode(ReturnT.SUCCESS_CODE); returnT.setContent("test"); returnT.setMsg(" test
"); return returnT; } }完成上述步骤后,启动Spring Boot应用,并登录到xxl-job管理后台(
ip:8082/xxl-job-admin)查看是否已自动注入执行器的IP。
然后,创建并执行上述代码中的任务,查看执行日志。

执行任务后查看日志:

代码存放在Gitee仓库中,使用了Nacos和xxl-job。如果需要执行新的定时任务,请创建新分支,完成后提交pull request。









