搭建XXL-JOB

简介: XXL-JOB由调度中心和执行器两部分组成。调度中心负责任务调度与管理,支持动态配置、监控告警;执行器部署在微服务中,接收调度请求并执行任务。通过SpringBoot集成xxl-job-core,配置注册地址后可自动注册到调度中心,实现分布式任务调度。

1.2.1 组成结构
XXL-JOB由两部分组成:
● 调度模块(调度中心): 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块; 支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。
● 执行模块(执行器): 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效; 接收“调度中心”的执行请求、终止请求和日志请求等。

1.2.2 部署调度中心
1.查阅xxl-job的源码
首先下载XXL-JOB
GitHub:https://github.com/xuxueli/xxl-job
码云:https://gitee.com/xuxueli0323/xxl-job
项目使用2.3.1版本: https://github.com/xuxueli/xxl-job/releases/tag/2.3.1
也可从课程资料目录获取,解压xxl-job-2.3.1.zip
使用IDEA打开解压后的目录

xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用)
:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
:xxl-job-executor-sample-frameless:无框架版本;
doc :文档资料,包含数据库脚本
在下发的虚拟机的MySQL中已经创建了xxl_job_2.3.1数据库
如下图:

安装xxl-job
没有使用下发虚拟机的同学请自行安装xxl-job。
拉取镜像:
docker pull xuxueli/xxl-job-admin:2.3.1
创建数据库:xxl_job_2.3.1
导入xxl_job_2.3.1.sql,如下:

创建目录:
/data/soft/xxl-job
/data/soft/xxl-job/applogs
创建配置文件:/data/soft/xxl-job/application.properties,内容如下:

web

server.port=8080
server.servlet.context-path=/xxl-job-admin

actuator

management.server.servlet.context-path=/actuator
management.health.mail.enabled=false

resources

spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/

freemarker

spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########

mybatis

mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml

mybatis.type-aliases-package=com.xxl.job.admin.core.model

xxl-job, datasource

spring.datasource.url=jdbc:mysql://192.168.101.68:3306/xxl_job_2.3.1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

datasource-pool

spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000

xxl-job, email

spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.from=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

xxl-job, access token

xxl.job.accessToken=default_token

xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")

xxl.job.i18n=zh_CN

xxl-job, triggerpool max size

xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

xxl-job, log retention days

xxl.job.logretentiondays=30
创建容器:
docker run -d -e \
--restart=always \
-v /data/soft/xxl-job/applogs:/data/applogs \
-v /data/soft/xxl-job/application.properties:/application.properties \
-p 8088:8080 \
--name xxl-job-admin \
xuxueli/xxl-job-admin:2.3.1
启动成功进入管理界面:
http://192.168.101.68:8088/xxl-job-admin
账号/密码:admin/123456
2.启动xxl-job
执行docker start xxl-job-admin 启动xxl-job
访问:http://192.168.101.68:8088/xxl-job-admin/
账号和密码:admin/123456
1.2.3 执行器
1.添加执行器依赖
下边配置执行器,执行器负责与调度中心通信接收调度中心发起的任务调度请求,执行器负责执行微服务中定义的任务,执行器程序由xxl-job提供,在微服务中引入下边的依赖即加入了执行器的程序。
我们在商品服务中引入xxl-job执行器依赖。


com.xuxueli
xxl-job-core
2.3.0

参考源代码中的XxlJobConfig去编写xxl-job的配置类,此配置类已提供,将课程资料中xxl-job下的配置类和模型类拷贝到商品服务的config包下:

2.配置xxl-job
在application.yaml下配置xxl-job
xxl-job:
enable: true
port: 11603
access-token: default_token
admin:
address: http://192.168.101.68:8088/xxl-job-admin
executor:
appName: ${spring.application.name}

#ip: 172.17.0.170
port: ${xxl-job.port}
# 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能
log-retention-days: 30

说明:
address:调度中心的地址
appName:执行器名称,spring.application.name表示微服务的名称(在bootstrap.yml中配置)
port:执行器端口号,通过xxl-job.port配置,执行器通过此端口与调度中心通信。

  1. 下边进入调度中心添加执行器
    启动商品服务即启动了xxl-job执行器。
    进入调度中心,进入执行器管理界面,如下图:

点击新增,填写执行器信息

AppName:执行名称, appName: ${spring.application.name}表示指定执行器名称就是微服务的应用名。
名称:取一个中文名称。
注册方式:自动注册,只要执行器和调度中心连通执行器会自动注册到调度中心
机器地址:自动注册时不用填写。
添加成功:

启动item-service,查看item-service的控制台:

xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 11603 说明执行器启动成功。
稍等片刻进入 xxl-job调度中心,进入执行器管理界面,执行器注册成功:

点击“查看(1)”,查看执行器的地址,如下图:

相关文章
|
存储 Java BI
XXL-JOB定时任务知识点和应用实例
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。该处只是介绍xxl_job的一下基础知识和使用的实例,具体的安装调试请参照对应的最新的官方文档,中文开源地址:https://www.xuxueli.com/xxl-job
4974 0
xxljob在业务代码中添加任务(登录后token验证)
之前做过一次在业务代码中调用xxljob的接口添加任务启动任务,xxljob的接口添加免登录验证注解后直接调用,博文地址:xxl-job 在业务代码中添加任务,后面用到的groupId获取方法也在这里面。
|
6月前
|
缓存 Java 关系型数据库
微服务原理篇(XXLJOB-幂等-MySQL)
本课程学习XXL-JOB任务调度核心技能:掌握其优势与架构组成,学会配置分布式调度任务,实现热点缓存更新;深入理解幂等性、数据库存储引擎、索引失效、回表、覆盖索引及SQL优化与分库分表方案。
|
Java 中间件 调度
SpringBoot整合XXL-JOB【03】- 执行器的使用
本文介绍了如何将调度中心与项目结合,通过配置“执行器”实现定时任务控制。首先新建SpringBoot项目并引入依赖,接着配置xxl-job相关参数,如调度中心地址、执行器名称等。然后通过Java代码将执行器注册为Spring Bean,并声明测试方法使用`@XxlJob`注解。最后,在调度中心配置并启动定时任务,验证任务是否按预期执行。通过这些步骤,读者可以掌握Xxl-Job的基本使用,专注于业务逻辑的编写而无需关心定时器本身的实现。
5089 10
SpringBoot整合XXL-JOB【03】-  执行器的使用
|
IDE Java 数据库连接
SpringBoot整合XXL-JOB【02】- 启动调度中心
本文介绍了如何初始化和配置XXL-JOB调度中心。首先,从GitHub或Gitee获取源码;接着,执行`tables_xxl_job.sql`脚本初始化数据库。然后,在IDE中打开项目并修改`application.properties`中的数据库连接和`accessToken`配置。完成配置后,启动`XxlJobAdminApplication`,访问http://localhost:8080/xxl-job-admin/进行登录。最后,简要介绍了调度中心的主要功能模块,包括运行报表、任务管理、调度日志、执行器管理和用户管理。下篇将通过实例演示如何使用XXL-JOB执行定时任务。
979 6
SpringBoot整合XXL-JOB【02】- 启动调度中心
|
前端开发 Java 调度
SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能
定时任务几乎是每个业务系统必不可少的功能,计算到期时间、过期时间等,定时触发某项任务操作。在使用单体应用时,基本使用Spring提供的注解即可实现定时任务,而在使用微服务集群时,这种方式就要考虑添加分布式锁来防止多个微服务同时运行定时任务而导致同一个任务重复执行。
2390 55
SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能
|
存储 算法 BI
xxljob本地运行
xxljob本地运行
1662 4
xxljob本地运行
|
Java 调度 数据库
Docker安装部署XXL-Job
Docker安装部署XXL-Job
2347 1
|
Kubernetes 数据库 容器
k8s快速部署xxl-job
k8s快速部署xxl-job
2185 3
|
SQL Shell 数据库连接
死磕xxl-job(二)
死磕xxl-job(二)
1438 0

热门文章

最新文章