Spring Boot项目集成xxl-job

98 阅读2分钟

Spring Boot项目集成xxl-job

这里提供将Spring Boot项目集成xxl-job的完整步骤:

  1. 在Spring Boot项目中添加xxl-job的依赖:
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.2.0</version>
</dependency>
  1. 在Spring Boot启动类中添加@EnableXXLJob注解启用xxl-job:
@EnableXXLJob 
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  1. 实现IJobHandler接口编写任务处理逻辑,如:
@Component
public class JobHandler extends IJobHandler {
    @Override
    public ReturnT<String> execute(String param) throws Exception {
        XxlJobLogger.log("XXL-JOB, Hello World.");
        return SUCCESS;
    }
} 
  1. 配置xxl-job核心配置项,如:
xxl: 
  job:
    admin:
      addresses: http://127.0.0.1:8080/xxl-job-admin  # 管理后台地址
      accessToken: ""                               # 执行器登陆令牌 
    executor:   
      appname: sample-spring-boot-executor           # 执行器AppName    
      address: ""                                    # 执行器地址,为空则自动获取    
      ip: ""                                         # 执行器IP,默认为空    
      port: 0                                        # 执行器Port,小于等于0则自动获取 
  1. 构建Spring Boot项目并运行。执行器会自动注册到管理后台,在管理后台会显示两条新任务数据(默认任务组下的两个任务)。

  2. 登陆管理后台(默认账号admin/123456),在任务管理菜单下配置您的业务任务,选择POBJ类型,JobHandler为刚才编写的任务类。

  3. 启动一个HTTP客户端(Postman等),发起POST请求:http://localhost:8080/xxl-job-admin/api/trigger?jobName=test&jobGroup=default

  4. 查看执行器日志,会打印出“XXL-JOB, Hello World.”,表示任务执行成功。

  5. 至此,Spring Boot项目集成xxl-job完成,可以在xxl-job平台管理和调度您的Spring Boot应用!

docker安装xxl-job

  1. 从Docker Hub拉取xxl-job镜像:
bash
docker pull xuxueli/xxl-job-admin
docker pull xuxueli/xxl-job-executor
  1. 创建数据库(MySQL),导入SQL脚本xa_job.sql,并创建容器:
bash
docker run -p 3306:3306 --name xxl-job-mysql \
-v $PWD/xa_job.sql:/docker-entrypoint-initdb.d/xa_job.sql \ 
-e MYSQL_ROOT_PASSWORD=root 
-d mysql:5.7
  1. 配置并启动Admin容器:
bash
docker run -p 8080:8080 --name xxl-job-admin \
-e PARAMS="--spring.datasource.url=jdbc:mysql://xxl-job-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8  --server.port=8080" \
-d xuxueli/xxl-job-admin
  1. 配置并启动Executor容器:
bash
docker run --name xxl-job-executor --link xxl-job-admin  \
-e PARAMS="--admin.addresses=http://xxl-job-admin:8080/xxl-job-admin  --admin.access-token=access-token  --executor.appname=xxl-job-executor-docker" \ 
-d xuxueli/xxl-job-executor
  1. 访问管理后台:http://localhost:8080,默认账号admin/123456。在任务管理页面会显示两条默认任务。

  2. 发起任务调度,观察日志验证任务执行。常见问题与解决方法:

    1.   1. xxl-job-executor注册失败:确认管理后台地址参数--admin.addresses正确,网络互通,访问令牌--admin.access-token与管理后台注册的Executor令牌一致。
    2.   2. 任务执行失败或没有日志:确认日志目录/logs在Executor容器中有读写权限;检查Docker日志,看是否有异常。重新构建Executor镜像或容器。
    3.   3. 无法访问管理后台:确认管理后台端口-p 8080:8080映射正确,网络互通。检查Docker日志查找异常信息。
    4.   4. 其他问题:可参考xxl-job官方文档进行排查。也可在回复中提出问题,我会提供针对性解答。