任务管理
任务是调度的核心单元。进入「任务管理」可创建、启停、手动触发任务。
创建任务
| 字段 | 说明 |
|---|---|
| 执行器分组 | 任务归属的 app_name(job_group) |
| 任务描述 | 展示名 |
| 调度类型 | CRON / 固定频率 / 固定延时 |
| 调度配置 | 见下表 |
| Handler | 执行器注册的处理函数名 |
| 任务参数 | 传给 handler 的字符串 |
| 路由策略 | 多机时的选取规则 |
| 阻塞策略 | 上次未完成时的处理 |
| 超时时间 | 单次执行超时(秒,0=不限) |
| 失败重试次数 | 失败后重试次数 |
基础信息字段填写要点
执行器分组:从下拉选,选项来自「执行器管理」页的分组(显示 app_name (title))。任务只能调度到所选分组当前在线的执行器;分组无在线机器则触发失败。
任务描述:任意展示名,用于列表与日志识别,建议填有业务含义的名字(如「日报数据同步」)。
Handler 与参数:随「GLUE 类型」不同而填法不同:
| GLUE 类型 | Handler | 参数 |
|---|---|---|
| BEAN(已注册 handler) | 必填,填执行器注册的 handler 名(内置如 httpCall/shellExec/mysqlQuery/sendWebhook,或自定义 handler) | 传给 handler 的字符串;内置 handler 多为 JSON,格式见 内置 handler |
| GLUE Go / Shell / Python | 留空(代码写在 GLUE 代码框) | 作为脚本/函数输入,如 Shell 的 $XXL_JOB_PARAM 环境变量 |
| HTTP 调用(URL) | 留空(URL 等配置在 HTTP 表单) | 作为 注入 URL / 请求头 / 请求体 |
即:只有 BEAN 任务需要填 Handler;HTTP 任务的「参数」是为占位符
提供值的。
调度类型与配置
| 类型 | 配置格式 | 示例 |
|---|---|---|
| CRON(1) | 6/7 段 CRON(含秒) | 0 */5 * * * ?(每 5 分钟) |
| 固定频率(2) | 秒数 | 30(每 30 秒) |
| 固定延时(3) | 秒数(上次结束后再延时) | 60(结束后等 60 秒) |
路由策略
多台在线机器时,选取哪台执行:
| 值 | 策略 | 说明 |
|---|---|---|
| 1 | 第一个 | 固定取列表首个 |
| 2 | 最后一个 | 固定取列表末个 |
| 3 | 轮询 | 依次轮流 |
| 4 | 随机 | 随机选取 |
| 5 | 一致性 HASH | 同一任务 hash 到固定机器 |
| 6 | 最不经常使用(LFU) | 选调用次数最少的 |
| 7 | 最近最久未使用(LRU) | 选最久未用的 |
| 8 | 故障转移 | 顺序尝试,跳过失败 |
| 9 | 忙碌转移 | 跳过忙碌机器 |
| 10 | 分片广播 | 广播到所有机器 |
阻塞策略
上次调度未完成、本次触发又到达时:
| 值 | 策略 | 说明 |
|---|---|---|
| 0 | 单机串行 | 排队等待(默认) |
| 1 | 丢弃后续 | 丢弃本次触发 |
| 2 | 覆盖之前 | 取消正在执行的,改为本次 |
生命周期操作
| 操作 | 说明 |
|---|---|
| 启动 | 开始按调度配置触发(计算下次触发时间) |
| 停止 | 暂停调度 |
| 手动触发 | 立即执行一次,不影响下次调度 |
| 编辑 | 修改配置(运行中也可改,下次触发生效) |
| 删除 | 移除任务 |
GLUE 模式
GLUE 类型任务可直接在页面编辑代码,系统保留最近 30 个版本(「GLUE 版本」查看历史)。支持 Shell / Python / Go(yaegi 在线解释)三种类型。
WARNING
GLUE 默认关闭(执行器 enable_script=false)。在线代码有执行风险,仅在受控环境开启,详见根目录 SECURITY.md。
HTTP 调用任务(glue_type=4)
GLUE 类型选「HTTP 调用(URL)」即可创建「定时调用一个 URL」的任务——典型用于触发 webhook、定时健康检查、回调第三方接口。配置以结构化表单编辑,序列化为 JSON 存入 glue_source,由执行器发起 HTTP 请求。
TIP
HTTP 任务需执行器显式开启:SDK 调 WithHTTPTask(true);xxljob/xxl-job-executor 镜像与 -executor 内嵌执行器已默认开启。
字段说明
| 字段 | 说明 |
|---|---|
| URL | 目标地址,必填;支持占位符 |
| 方法 | GET(默认) / POST / PUT / DELETE / PATCH / HEAD |
| 请求头 | 一行一个,格式 Key: Value |
| 请求体 | 原始字符串,仅 POST/PUT/PATCH 携带;支持占位符 |
| 超时(秒) | 0 = 回退「任务超时」→ 默认 30 |
| 期望状态码 | 逗号分隔,如 200,201;留空 = 任意 2xx 算成功 |
占位符
URL / 请求头值 / 请求体在请求前替换:
| 占位符 | 含义 |
|---|---|
| 任务的「任务参数」 |
/ | 分片广播时的分片号/总数 |
| 本次调度日志 ID |
成败判定
命中「期望状态码」或(留空时)任意 2xx → 任务成功;否则失败(触发重试/告警)。注意 201/204 默认算成功(区别于直接返回原始码的做法)。
示例
GET 健康检查(每 1 分钟):
URL: https://api.example.com/health
方法: GET
期望: 200POST webhook(带任务参数注入,每 5 分钟):
URL: https://oapi.dingtalk.com/robot/send?access_token=xxx
方法: POST
请求头: Content-Type: application/json
请求体: {"msgtype":"text","text":{"content":"定时通知 {{param}}"}}
期望: 200
任务参数: 日报与 httpCall handler 的区别
两者都能「调 URL」,按需选择:
| 维度 | HTTP 任务(glue_type=4) | BEAN + httpCall handler |
|---|---|---|
| 配置位置 | 任务定义(固定) | 任务参数(每次可变) |
| 占位符 | ✅ 等 | ❌ |
| 期望状态码 | ✅ 可配 | ❌(固定 2xx) |
| 分片广播 | ✅ 每个分片各发一次 | ✅ |
| 适用 | 固定的定时回调/检查 | 参数频繁变化的一次性调用 |
httpCall 等内置 handler 的参数格式见 内置 handler。
场景示例
| 场景 | 推荐配置 |
|---|---|
| 每天凌晨清理 | CRON 0 0 3 * * ?(每天 3 点) |
| 高频轮询 | 固定频率 30(每 30 秒)+ 路由轮询(3) |
| 慢任务限频 | 固定延时 60 + 阻塞丢弃(1) |
| 父子编排 | 父任务 child_jobid 填子任务 ID,父成功后触发子 |
| 大数据分片 | 路由分片广播(10),每台执行器处理一片 |
| 定时 webhook | HTTP 任务,POST + 请求体 + 期望 200,如钉钉/企微/飞书机器人 |
| 健康检查 | HTTP 任务,GET URL + 期望 200,失败触发告警/重试 |
示例任务(CRON/固定频率/父子编排等)可通过
--demo启动 admin 自动 seed,或参考backend/examples/的 GLUE 脚本。
