> 文章列表 > SpringBoot整合XXL-JOB

SpringBoot整合XXL-JOB

SpringBoot整合XXL-JOB

XXL-JOB:

官网文档地址:分布式任务调度平台XXL-JOB

GitHub地址:https://github.com/xuxueli/xxl-job

Gitee地址:https://gitee.com/xuxueli0323/xxl-job

  1. 拉取代码,首先执行一下doc/db下的sql文件 tables_xxl_job.sql 建立数据库以及相关表。

  2. 在xxl-job-admin 下的 application.properties 文件中修改一下 数据库连接配置 ,端口冲突也可以改一下端口

  3. 在自己的SpringBoot项目中进行以下操作:

在pom中引入依赖

		<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.0</version></dependency>

配置application.yml

xxl:job:admin:# xxl-job后台管理界面的地址addresses: http://127.0.0.1:8099/xxl-job-adminexecutor:# 此执行器的名称appname: xxl-job-executor-sampleip:# 此执行器的端口port: 9999# 此执行器的日志存放路径logpath: /data/applogs/xxl-job/jobhandler# 此执行器的日志保存时间logretentiondays: 30accessToken: default_token #调度中心通讯TOKEN [选填]:非空时启用

XxlJobConfig配置类

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class XxlJobConfig {@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.executor.appname}")private String appName;@Value("${xxl.job.executor.ip}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Bean()public XxlJobSpringExecutor xxlJobExecutor() {log.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appName);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}}

job类

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;@Component
public class DemoJobHandler {@XxlJob("jobDemo")public String jobDemo() throws Exception {String param = XxlJobHelper.getJobParam();System.out.println("excuting......" + param);Thread.sleep(2000);return "SUCCESS";}
}
  1. 启动xxl-job xxl-job-admin 下的启动类 XxlJobAdminApplication,打开http://localhost:8099/xxl-job-admin/ 进入任务调用中心首页。SpringBoot整合XXL-JOB
  2. 在执行器管理中,新增执行器:
    AppName:是配置文件中的 xxl.job.executor.appname=xxl-job-executor-sample
    名称:展示在页面上的名称
    机器地址:如果是手动录入的话,就是IPV4的地址ip:端口号
    SpringBoot整合XXL-JOB
  3. 配置任务管理:新增任务
    JobHandler 是 @XxlJob(“jobDemo”) 中的值
    SpringBoot整合XXL-JOB
    7.点击操作 - 执行一次
    SpringBoot整合XXL-JOB
    8.查看运行结果

SpringBoot整合XXL-JOB

在项目启动的时候曾经遇到一个问题:

Exception in thread “Thread-12” java.net.BindException: Address already in use: bind

SpringBoot整合XXL-JOB
本以为是端口被占用,其实并不是;
在高版本的xxl-job中(例如我引用的就是2.3.0)
在上图的@Bean(initMethod = “start”, destroyMethod = “destroy”)这里;
直接修改成@Bean即可。