XXL-JOB 任务

XXL-JOB是一个分布式任务调度平台,由调度中心和执行器组成。配置时需启动调度中心xxl-job-admin,将任务注册其中。框架支持CRON、固定速度和固定延迟等调度类型。执行器集群时,可设置路由策略如轮询、随机等。调度失败或执行异常会触发邮件通知。官方文档详尽,非常适合微服务场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XXL-JOB 由调度中心,执行器, 任务组成。

执行器中存放若干任务,具体执行哪些任务由执行器决定。

调度中心实现对执行器的调度。

 

怎么配置环境? 我试了好久,终于摸清了套路。首先,这个框架是给微服务设计的,也就意味着他和eurake差不多,都需要一个服务中心的玩意对我们的诸多服务提供注册监听的服务。

我从github下了 源码, 果然,源码里有个叫admin的项目, 这个项目就是“调度中心” , 负责统一管理任务调度。 我们要做的就是 启动运行这个xxl-job-admin服务, 然后把我们自己的服务中的任务注册到xxl-job-admin中。 xxl-job-admin服务为我们提供了一个web端界面,我们可以使用界面定义配置我们的任务。

这个框架用起来非常简单,官网的文档写的非常直白, 顺序看下来就能懂个大半。 唯一的缺点是xxl-job用的是mysql数据库。对于pgsql数据库不适用,要改,光从数据库还不行,他代码里的model也不能用。因为mysql的语句 在单词前后加了~ , 这个符号pgsql没有。所以项目跑不起来。自己用pgsql搭到一半就放弃了。

我来说说自己的搭建过程的心得。

我们的服务注册执行器的时候,xxl.job.executor.appname是在web界面配置的执行器名称。 框架按照这个名称对我们的服务进行分组。 假设我们有两个服务A 和B ,用的是同一个xxl.job.executor.appname,就意味着服务A和B都注册在了同一个执行器。 如果两个服务都在本机的话,要保证端口不同。

触发配置:
    - 调度类型:
        无:该类型不会主动触发调度;
        CRON:该类型将会通过CRON,触发任务调度;
        固定速度:该类型将会以固定速度,触发任务调度;按照固定的间隔时间,周期性触发;
        固定延迟:该类型将会以固定延迟,触发任务调度;按照固定的延迟时间,从上次调度结束后开始计算延迟时间,到达延迟时间后触发下次调度;

固定速度: 是指每隔固定时间调度一次任务。假如现在是2:00 ,每隔5分钟执行一次任务。 一次任务的执行时间是2个小时。 那么固定速度的执行时间是:2:05  2:10  2:15 。。。。 不论任务有没有执行完成,每隔5分钟都会进行一次任务调度。

固定延迟:执行时间会是-》2:05  4:10   6:15 , 是先执行一次任务, 等这个任务完成后,延迟5分钟再次进行任务调度。

调度类型是无就以为着这个任务要手动调度。

高级配置:
    - 路由策略:当执行器集群部署时,提供丰富的路由策略,包括;
        FIRST(第一个):固定选择第一个机器;
        LAST(最后一个):固定选择最后一个机器;
        ROUND(轮询):;
        RANDOM(随机):随机选择在线的机器;
        CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
        LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举;
        LEAST_RECENTLY_USED(最近最久未使用):最久未使用的机器优先被选举;
        FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
        BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度;
        SHARDING_BROADCAST(分片广播):广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务;

当一个执行器中注册了多台机器时(127.0.0.1:9999 , 127.0.0.1:9998 , 127.0.0.1:9997)

轮询策略:任务轮番分配给三台机器。 第一次调度时让9999的机器去执行, 第二次调度时让9998的机器去执行, 第三次调度时让9997的机器去执行, 第四次调度时让9999的机器去执行。

随机: 注意是随机选择 在线 的机器。

调度失败发送邮件的情况我理解的是指:

(1)任务调度失败        (2)调度成功,执行任务时抛出异常导致任务中断

这两种情况都会发送邮件。或者说,只要是调度日志中  执行结果 为 失败的情况, 都会发送邮件。

从列表中可以看到, 有 调度结果  和  执行结果两种。 这两种哪一种不成功都会发送邮件。

 

其他的官方文档都说的很详细了。 这个东西真的太好用了 。

官方文档地址! 推荐推荐!

### XXL-JOB任务调度配置 #### 调度中心与执行器配置 为了使XXL-JOB正常工作,需正确设置调度中心地址以及执行器的相关信息。具体来说,在`application.properties`或相应的YAML配置文件中定义Web端口和其他必要的连接参数[^1]。 ```properties # application.properties example xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin xxl.job.executor.appname=xxl-job-executor-sample xxl.job.executor.ip= xxl.job.executor.port=9999 ``` 上述配置指定了调度中心的位置(`admin.addresses`)、执行器的应用名称(`appname`)及其监听IP和端口号(`ip`, `port`)。这些设定对于确保任务能够被正确分发到各个节点至关重要。 #### Spring Boot集成实例 考虑到很多开发者倾向于使用Spring框架构建应用,官方仓库提供了基于Spring Boot的样例工程路径位于 `/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot` 。此样本展示了如何无缝对接Spring环境下的微服务架构并实现高效的任务管理功能[^3]。 --- ### 常见问题解决方案 当遇到部署或者运行过程中产生的疑问时,可以参考以下几点建议: - **无法访问调度控制台**: 检查防火墙规则是否阻止了外部请求到达指定的服务端口;确认服务器上的应用程序已经启动并且正在监听预期的HTTP接口。 - **任务状态异常(如失败率高)**: 审视日志记录寻找错误提示;评估网络延迟对跨机器通信的影响;优化数据库查询性能以减少超时风险。 - **内网穿透需求处理**: 对于处于私有网络内部的服务想要公开暴露其API给公网用户调用的情况,推荐采用FRP(Fast Reverse Proxy)工具完成反向代理操作。这涉及下载适合目标平台版本的Frp客户端和服务端软件包,并按照文档指导调整相应配置项来建立安全稳定的隧道链接[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值