搭建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)”,查看执行器的地址,如下图:

相关文章
|
1月前
|
SQL 人工智能 数据库
你的数据库不是性能差,是你的SQL在“烧钱”:用这条指令让AI化身资深DBA
硬件升配解决不了烂SQL!本文提供一套经过验证的AI指令,将大模型转化为资深DBA,通过深度诊断、索引优化和执行计划分析,帮助开发者从根源解决慢查询问题,实现数据库性能的降本增效。
234 19
|
存储 Java BI
XXL-JOB定时任务知识点和应用实例
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。该处只是介绍xxl_job的一下基础知识和使用的实例,具体的安装调试请参照对应的最新的官方文档,中文开源地址:https://www.xuxueli.com/xxl-job
4612 0
xxljob在业务代码中添加任务(登录后token验证)
之前做过一次在业务代码中调用xxljob的接口添加任务启动任务,xxljob的接口添加免登录验证注解后直接调用,博文地址:xxl-job 在业务代码中添加任务,后面用到的groupId获取方法也在这里面。
|
1月前
|
Java 测试技术 调度
小结
本文介绍XXL-JOB任务调度框架的使用,包括其核心组成、任务编写与配置方法。通过@XxlJob注解定义任务,结合Cron表达式实现定时调度,并支持BEAN和GLUE两种模式。重点讲解分片广播任务,利用分片参数实现分布式环境下任务的高效并行处理,提升系统性能与扩展性。
|
1月前
|
缓存 Java 关系型数据库
微服务原理篇(XXLJOB-幂等-MySQL)
本课程深入讲解微服务架构下的任务调度与数据一致性方案,涵盖XXL-JOB分布式调度原理、幂等性设计、MySQL存储引擎对比、索引优化及SQL调优策略。通过实战掌握热点数据缓存预热、分片广播任务处理、避免重复执行等核心技能,提升系统性能与可靠性。(238字)
|
Java 调度 Maven
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
1940 0
|
1月前
|
人工智能 缓存 算法
为什么你学了那么多算法,代码性能还是“一塌糊涂”?
本文针对开发者普遍存在的“学了算法却写不出高性能代码”的痛点,提供了一套系统化的“算法优化AI指令”。该指令旨在引导开发者建立“分析-设计-验证”的工程化思维,通过结构化的提问框架,让AI成为辅助性能优化的“私人教练”,从而将零散的算法知识转化为体系化的实战能力。
197 7
|
1月前
|
人工智能 前端开发 测试技术
告别 GUI Agent 工程基建噩梦!阶跃星辰开源 4B 模型,本地轻松部署,玩转安卓应用
阶跃星辰开源GELab-Zero,首发4B GUI Agent模型及完整基建,支持一键部署,在多端性能达SOTA。同步推出真实场景评测基准AndroidDaily,推动GUI智能体规模化落地。
447 10
告别 GUI Agent 工程基建噩梦!阶跃星辰开源 4B 模型,本地轻松部署,玩转安卓应用
|
1月前
|
机器学习/深度学习 人工智能 测试技术
NeurIPS 2025 | 浙大、浙工大等团队提出LRMs 自适应思考:简单任务快处理,复杂任务深分析
浙大、阿里云等提出首个LRM快慢思维控制方法,发现特定词可触发思维模式,结合PCA导向与自适应策略,实现无需训练的推理速度调控,在多模型上显著提升准确率并减少耗材。
157 1
NeurIPS 2025 | 浙大、浙工大等团队提出LRMs 自适应思考:简单任务快处理,复杂任务深分析
|
1月前
|
人工智能 API Android开发
送给GLM Coding Plan用户和开源社区的“AI手机”
智谱推出“AI手机”新体验,通过Claude Code输入提示词,即可自动部署开源Agent模型AutoGLM。三步操作,轻松拥有专属AI设备,享受技术平权。倡导开源生态与AI协同,推动人人可用的AGI未来。
342 2