一、2.2.0 版本官方支持情况
核心事实:
XXL-Job 在 2.3.0 之前未提供官方管理客户端,2.2.0 版本需直接调用其 REST API 进行任务管理。但可通过以下方案实现:
二、2.2.0 兼容方案
方案 1:直接 HTTP API 调用(推荐)
// 1. 登录认证获取Cookie
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost loginRequest = new HttpPost("http://xxl-job-admin:8080/xxl-job-admin/login");
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("userName", "admin"));
params.add(new BasicNameValuePair("password", "123456"));
loginRequest.setEntity(new UrlEncodedFormEntity(params));
try (CloseableHttpResponse response = httpClient.execute(loginRequest)) {
// 保存Cookie用于后续请求
String cookie = response.getFirstHeader("Set-Cookie").getValue();
// 2. 创建任务
HttpPost createRequest = new HttpPost("http://xxl-job-admin:8080/xxl-job-admin/jobinfo/add");
createRequest.setHeader("Cookie", cookie);
JSONObject jobJson = new JSONObject();
jobJson.put("jobGroup", 2); // 执行器ID
jobJson.put("jobDesc", "数据备份任务");
jobJson.put("scheduleType", "CRON");
jobJson.put("scheduleConf", "0 0 2 * * ?");
jobJson.put("glueType", "BEAN");
jobJson.put("executorHandler", "backupHandler");
jobJson.put("author", "DBA");
createRequest.setEntity(new StringEntity(jobJson.toString(), ContentType.APPLICATION_JSON));
httpClient.execute(createRequest); // 创建任务
// 3. 删除任务 (需要jobId)
HttpPost deleteRequest = new HttpPost("http://xxl-job-admin:8080/xxl-job-admin/jobinfo/remove");
deleteRequest.setHeader("Cookie", cookie);
List<NameValuePair> delParams = new ArrayList<>();
delParams.add(new BasicNameValuePair("id", "123")); // 任务ID
deleteRequest.setEntity(new UrlEncodedFormEntity(delParams));
httpClient.execute(deleteRequest);
}
方案 2:封装简易客户端
public class XxlJobClientV2 {
private final String adminUrl;
private String authCookie;
public XxlJobClientV2(String adminUrl, String username, String password) throws IOException {
this.adminUrl = adminUrl;
this.authCookie = login(username, password);
}
private String login(String user, String pass) throws IOException {
// 登录逻辑(同方案1)
return "XXL_JOB_LOGIN_IDENTITY=...";
}
public int createJob(JobInfo job) throws IOException {
HttpPost request = new HttpPost(adminUrl + "/jobinfo/add");
request.setHeader("Cookie", authCookie);
// 设置JSON参数...
return parseJobIdFromResponse(executeRequest(request));
}
public void deleteJob(int jobId) throws IOException {
HttpPost request = new HttpPost(adminUrl + "/jobinfo/remove");
request.setHeader("Cookie", authCookie);
request.setEntity(new UrlEncodedFormEntity(
Collections.singletonList(new BasicNameValuePair("id", String.valueOf(jobId)))
);
executeRequest(request);
}
// 其他操作封装...
}
三、2.2.0 核心 API 列表
功能 | 方法 | 路径 | 参数格式 |
---|---|---|---|
登录 | POST | /login | form-urlencoded |
添加任务 | POST | /jobinfo/add | JSON |
更新任务 | POST | /jobinfo/update | JSON |
删除任务 | POST | /jobinfo/remove | form-urlencoded |
启动任务 | POST | /jobinfo/start | form-urlencoded |
停止任务 | POST | /jobinfo/stop | form-urlencoded |
触发执行 | POST | /jobinfo/trigger | form-urlencoded |
任务列表 | POST | /jobinfo/pageList | JSON |
执行日志 | POST | /joblog/pageList | JSON |
四、关键参数说明(2.2.0)
任务创建 JSON 结构:
{
"jobGroup": 2, // 执行器ID(必填)
"jobDesc": "订单超时处理", // 任务描述
"scheduleType": "CRON", // 调度类型: CRON/FIX_RATE
"scheduleConf": "0 0/5 * * * ?", // cron表达式
"glueType": "BEAN", // 模式: BEAN/GLUE_GROOVY等
"executorHandler": "orderTimeoutHandler", // Bean模式标识
"executorParam": "", // 任务参数
"executorRouteStrategy": "FIRST", // 路由策略
"misfireStrategy": "DO_NOTHING", // 调度过期策略
"author": "TechTeam", // 负责人
"alarmEmail": "alert@company.com" // 报警邮箱
}
分页查询参数:
{
"start": 0, // 起始位置
"length": 10, // 每页数量
"jobGroup": 2, // 执行器ID
"triggerStatus": -1, // 状态: -1=全部, 0=停止, 1=运行
"jobDesc": "", // 任务描述过滤
"executorHandler": "" // 执行器Handler过滤
}
五、2.2.0 特有注意事项
-
Cookie 有效期问题:
2.2.0 会话有效期固定 30 分钟,需实现会话刷新:
java // 每次请求前检查会话 if (isSessionExpired()) { this.authCookie = login(username, password); }
-
参数差异:
相比 2.4.0,2.2.0 缺少以下字段:
-glueUpdatetime
(GLUE更新时间)
-childJobId
(子任务ID)
-executorTimeout
(任务超时时间) -
执行器注册方式:
2.2.0 需要手动在管理界面添加执行器,不支持自动注册
六、升级建议
如果条件允许,强烈建议升级到 2.4.0+,主要优势:
+ 官方管理客户端支持
+ 动态执行器注册
+ OpenAPI 安全认证
+ 更完善的监控指标
+ 任务分片广播优化
- 需要兼容旧任务配置
版本迁移提示:
如同将蒸汽机车升级为高铁 - 2.2.0 如同可靠的蒸汽动力系统,能完成基本运输;而 2.4.0+ 则是现代化高速铁路,提供更强大的调度能力和安全保障。迁移时需注意:
- 备份
/data/applogs/xxl-job/
目录- 逐条验证旧任务配置
- 使用
xxl-job-migration-tool
进行配置转移- 新版本采用
accessToken
替代基础认证