最详细的xxl-job java配置方式spring-boot


转自:https://blog.csdn.net/weixin_44055234/article/details/106565516

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

去gitee或者github下载源代码 goto xxl-job

  1. 下载或者克隆后用idea 打开项目或直接用idea克隆项目到本地

在这里插入图片描述

  1. 在项目的doc文件夹下有个db文件夹 ,db文件夹下的sql脚本是xxl-job运行最基本的数据库和表,用sqlyol或Navicat
    运行脚本,或者其他方式执行sql脚本

在这里插入图片描述

  1. 在xxl-job-admin项目中的application.properties中配置相关属性
    xxl-job-admin是调度器 所以得先启动,如果执行器启动找不到调度器会报连接异常
    在这里插入图片描述

     把刚刚执行sql脚本的数据库连接和密码配置到application.properties中
     其他属性可有所需求在进行配置
    
    • 1
    • 2
  2. 等待idea自动导包完成 然后使用maven工具 先把项目clear 在install 或者xxl-job-admin这个模块需要的模块 和调度模块需要的模块 install
    install 后jar包会存在自己的本地仓库,之后可以直接引入

在这里插入图片描述

  1. 找到xxl-job的启动类 启动项目,或者直接打包成jar包 运行也可以
    启动成功后浏览器访问 http://127.0.0.1:8080/xxl-job-admin 就可以看到登录页面
    默认账号密码是 admin 123456

在这里插入图片描述
登录后
因为之前有测试过所以有数据
在这里插入图片描述

如何使用? 编写执行器
6. 新建spring boot 工程 在pom文件中导入坐标

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.2.1-SNAPSHOT</version> </dependency> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这两个坐标是必须的 如果没有spring-boot-starter-web 会无法启动

  1. 编写application.properties中的配置还有logback.xml复制到resources下,这个文件可以自己编写,为了方便我是从xxl-job-admin模块下resources文件中拷贝过来的
    在这里插入图片描述
  2. 编写配置类来读取application.properties的配置
    这里我是直接复制xxl-job-admin的配置类
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; @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、引入依赖: * <dependency> * <groupId>org.springframework.cloud</groupId> * <artifactId>spring-cloud-commons</artifactId> * <version>${version}</version> * </dependency> * * 2、配置文件,或者容器启动变量 * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.' * * 3、获取IP * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); */ } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  1. 编写需要定时执行的代码,也就是调度器执行的执行器
    在需要执行的方法加上@XxlJob 注解 并且取名,之后在调度器中好区分,否者无法调度
    注:Returnt<>(200,"…")中 code 200是成功

在这里插入图片描述

  1. 配置完毕后启动我们自己创建的工程,在此之前必须启动xxl-job-admin 否者会报错
    在xxl-job-admin的管理页面新增执行器,执行器管理->新增->填写相关信息
    appname是之前在我们自己工程里application.properties配置的
    名称可随便取,只是个区分
    机器地址可手动填写多个,可做高可用
    如果你的执行器是多个的话他会用appName来区分,多个执行器介意手动填写

在这里插入图片描述

  1. 在任务管理中找到刚刚创建的执行器,选中- 新增
    在这里插入图片描述
    在这里插入图片描述
    任务参数会传递到执行器中
    其他参数见名知意

详情可查阅官方文档
在这里插入图片描述

  1. 创建好任务后可在点击操作任务,点启动后执行器就会执行

在这里插入图片描述

在这里插入图片描述

配置任务的时候如果运行模式是GLUE 可以在线编写调度器代码和脚本,支持多语言
运行后可在运行报表中查看调度情况,也可以查看调度日志

调度器集群
一个调度器在执行另外一个不会干涉
在这里插入图片描述


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM