当前位置: 首页 > news >正文

xxljob总结

XXL-Job 支持多种任务类型,以下是常见任务类型的示例 Demo,包含核心配置和代码片段,帮助快速理解用法:

一、Bean模式任务(最常用)

通过注解  @XxlJob  定义任务方法,直接在 Spring 容器中管理,适合 Java 项目。

1. 配置步骤

- 依赖引入(Maven):
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version> <!-- 最新版本 -->
</dependency>

- 任务代码:
@Component
public class DemoJobHandler {

    // 任务名称:对应 XXL-Job 控制台配置的 "JobHandler" 字段
@XxlJob("demoBeanJob")
public ReturnT<String> demoBeanJob(String param) throws Exception {
XxlJobLogger.log("Bean模式任务执行,参数:{}", param);

        // 业务逻辑:例如简单打印
System.out.println("执行Bean任务,时间:" + new Date());

        return ReturnT.SUCCESS; // 成功标识
}
}

- 控制台配置:
任务类型选择“BEAN”,JobHandler 填写  demoBeanJob ,其他参数(如定时规则)按需配置。

二、分片广播任务(分布式并行处理)

适合大数据量场景,将任务拆分为多个分片,由不同执行器并行处理。

1. 任务代码

@XxlJob("shardingJob")
public ReturnT<String> shardingJob(String param) throws Exception {
// 获取分片信息:当前分片索引(0开始)、总分片数
int shardIndex = XxlJobHelper.getShardIndex();
int shardTotal = XxlJobHelper.getShardTotal();

    XxlJobLogger.log("分片任务执行:分片索引={}, 总分片数={}", shardIndex, shardTotal);

    // 业务逻辑:按分片处理数据(例如处理用户ID%shardTotal=shardIndex的数据)
for (int userId = 1; userId <= 1000; userId++) {
if (userId % shardTotal == shardIndex) {
System.out.println("处理用户ID:" + userId);
}
}

    return ReturnT.SUCCESS;
}


- 控制台配置:
任务类型选择“BEAN”,JobHandler 填写  shardingJob ,并设置“分片总数”(如4),执行器会按分片数并行处理。

三、GLUE模式(Java)

任务代码直接在 XXL-Job 控制台编写(动态脚本),无需重启服务,适合简单逻辑或临时任务。

1. 控制台配置

- 任务类型选择“GLUE(Java)”,在“GLUE代码”编辑器中编写:
// 继承IJobHandler
public class GlueJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
XxlJobLogger.log("GLUE模式任务执行,参数:{}", param);
System.out.println("动态脚本执行,时间:" + new Date());
return ReturnT.SUCCESS;
}
}

- 保存后直接触发,代码实时生效。

四、命令行任务

执行系统命令(如脚本、程序),适合跨语言场景。

1. 控制台配置

- 任务类型选择“COMMAND”,“JobHandler”填写命令内容:
# 示例:执行shell脚本
/home/xxl-job/demo.sh "param1"

- 脚本内容( demo.sh ):
echo "命令行任务执行,参数:$1,时间:$(date)"


五、任务依赖示例

通过“子任务ID”配置任务依赖,实现“任务A执行完再执行任务B”。

1. 配置步骤

- 在任务B的“子任务ID”中填写任务A的ID(多个用逗号分隔)。
- 任务A代码:
@XxlJob("parentJob")
public ReturnT<String> parentJob(String param) {
XxlJobLogger.log("父任务执行完成");
return ReturnT.SUCCESS;
}

- 任务B代码:
@XxlJob("childJob")
public ReturnT<String> childJob(String param) {
XxlJobLogger.log("子任务执行(依赖父任务完成)");
return ReturnT.SUCCESS;
}


关键说明

- 日志查看:通过  XxlJobLogger.log()  输出的日志,可在 XXL-Job 控制台“任务日志”中查看。
- 失败处理:任务返回  ReturnT.FAIL  时,控制台会标记失败,可配置重试次数。
- 参数传递:控制台配置的“执行参数”会作为  param  传入任务方法。

以上示例覆盖了日常开发中最常用的任务类型,可根据实际业务场景(如定时对账、数据同步)调整逻辑。

 

http://www.dtcms.com/a/313106.html

相关文章:

  • Obsidian结合CI/CD实现自动发布
  • 1、docker容器命令 | 生命周期管理
  • NX969NX972美光固态闪存NX975NX977
  • python 12 install jupyter时zmq.h或libzmq报错处理
  • MVCC:数据库事务隔离的 “时空魔法”
  • nvm切换本地nodejs环境
  • node中shapefile字符集判断
  • Sklearn 机器学习 数据聚类 KMeans实现聚类
  • wav音频格式中,ACM波形、A/mu-Law Wave、Windows PCM、Microsoft ADPCM的区别
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——9. 接入真实硬件:驱动USB摄像头
  • LeetCode 分类刷题:2824. 统计和小于目标的下标对数目
  • Go语言--语法基础7--函数定义与调用--自定义函数
  • Go语言实战案例:TCP服务器与客户端通信
  • HoloLens+vuforia打包后遇到的问题
  • 图像、视频、音频多模态大模型中长上下文token压缩方法综述
  • Connection refused: no further information: localhost/127.0.0.1:2375
  • Git的安装和配置
  • JavaWeb开发
  • XSS-DOM 2
  • [硬件电路-150]:数字电路 - 数字电路与模拟电路的异同
  • 洛谷 B3841:[GESP202306 二级] 自幂数判断
  • 当Windows远程桌面出现“身份验证错误。要求的函数不受支持”的问题
  • 方差 协方差矩阵是什么
  • java的隐式类型转换和强制转换类型
  • 科威特塔观测指南:412米高空俯瞰石油城变迁
  • 在AI技术快速迭代的背景下,如何通过RAG技术提升模型的实时性和准确性?从Naive RAG到Modular RAG:AI技术进化的关键路径
  • 生成式人工智能展望报告-欧盟-04-社会影响与挑战
  • 86、信息系统建设原则
  • Java 中的多态性及其实现方式
  • AI + 云原生:正在引爆下一代应用的技术革命