搭建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天前
|
消息中间件 监控 Java
RocketMQ:底层Netty频繁OS OOM
本文记录了一例Java应用因多ClassLoader加载多个Netty的PooledByteBufAllocator导致堆外内存超限、触发OS OOM的排查过程。通过NMT、Arthas等工具分析,发现7个不同类加载器各自实例化独立的分配器,均不受MaxDirectMemorySize全局限制,最终总堆外内存远超预期。根因在于Netty使用Unsafe直接申请内存,绕过JVM监管。短期建议调低堆内存以腾出空间,长期需中间件协同优化。
|
2月前
|
传感器 人工智能 API
仅100多元,他给视障人群装上AI“眼睛”
上海两名开发者为验证AI助盲实效,亲手打造百元AI眼镜,蒙眼实测过马路、识盲道,并开源项目鼓励更多人参与。技术导航,人心照亮。
800 6
仅100多元,他给视障人群装上AI“眼睛”
|
17天前
|
人工智能 前端开发 JavaScript
新的LLM交互模式!大模型终于能自己生成交互式 UI 了
Google Research推出的Generative UI,让大模型不仅能生成内容,还能一键创建含地图、图表、小游戏等交互功能的完整网页。告别“文字墙”,迈向“内容即应用”的新时代,82.8%用户偏爱此创新体验。
279 8
|
10天前
|
机器学习/深度学习 人工智能 测试技术
NeurIPS 2025 | 浙大、浙工大等团队提出LRMs 自适应思考:简单任务快处理,复杂任务深分析
浙大、阿里云等提出首个LRM快慢思维控制方法,发现特定词可触发思维模式,结合PCA导向与自适应策略,实现无需训练的推理速度调控,在多模型上显著提升准确率并减少耗材。
NeurIPS 2025 | 浙大、浙工大等团队提出LRMs 自适应思考:简单任务快处理,复杂任务深分析
|
15天前
|
机器学习/深度学习 人工智能 程序员
StackOverflow已经死亡了吗
StackOverflow曾是程序员的“圣地”,但AI崛起正改变这一格局。ChatGPT等工具以高效即时的优势分流用户,使其面临流量下滑与社区文化挑战。而新兴的大模型实验室Lab4AI则融合算力、实践与协作,构建AI时代下的开发者新生态。从问答到实践,开发者社区正在进化。
StackOverflow已经死亡了吗
|
4天前
|
人工智能 缓存 算法
为什么你学了那么多算法,代码性能还是“一塌糊涂”?
本文针对开发者普遍存在的“学了算法却写不出高性能代码”的痛点,提供了一套系统化的“算法优化AI指令”。该指令旨在引导开发者建立“分析-设计-验证”的工程化思维,通过结构化的提问框架,让AI成为辅助性能优化的“私人教练”,从而将零散的算法知识转化为体系化的实战能力。
110 7
|
2月前
|
文字识别 测试技术 开发者
Qwen3-VL新成员 2B、32B来啦!更适合开发者体质
Qwen3-VL家族重磅推出2B与32B双版本,轻量高效与超强推理兼备,一模型通吃多模态与纯文本任务!
2542 12
|
1天前
|
Java 测试技术 调度
小结
本文介绍XXL-JOB任务调度框架的使用,包括其核心组成、任务编写与配置方法。通过@XxlJob注解定义任务,结合Cron表达式实现定时调度,并支持BEAN和GLUE两种模式。重点讲解分片广播任务,利用分片参数实现分布式环境下任务的高效并行处理,提升系统性能与扩展性。
|
1天前
|
缓存 Java 关系型数据库
微服务原理篇(XXLJOB-幂等-MySQL)
本课程深入讲解微服务架构下的任务调度与数据一致性方案,涵盖XXL-JOB分布式调度原理、幂等性设计、MySQL存储引擎对比、索引优化及SQL调优策略。通过实战掌握热点数据缓存预热、分片广播任务处理、避免重复执行等核心技能,提升系统性能与可靠性。(238字)

热门文章

最新文章