# 定时任务调度服务 - API文档 ## 概述 分布式定时任务调度服务,支持: - 定时任务CRUD - Cron表达式配置 - 任务执行记录 - 任务调度管理 - 失败重试机制 - 任务监控告警 - XXL-Job兼容接口 ## 基础信息 - 基础路径: `http://localhost:8088` - Swagger UI: `http://localhost:8088/swagger-ui.html` - API文档: `http://localhost:8088/v3/api-docs` ## 认证 本服务暂未实现认证,生产环境请添加JWT或其他认证机制。 --- ## 定时任务管理 ### 创建任务 **POST** `/api/task` **请求体:** ```json { "taskName": "数据同步任务", "description": "每日凌晨同步业务数据", "taskGroup": "sync", "cronExpression": "0 0 2 * * ?", "taskClass": "dataSyncTask", "methodName": "execute", "taskParams": "{\"source\":\"erp\",\"target\":\"bi\"}", "taskType": "BEAN", "concurrent": true, "maxRetries": 3, "retryInterval": 60, "timeout": 3600, "alertEnabled": true, "alertEmails": "admin@example.com", "misfirePolicy": "DO_NOTHING", "owner": "admin" } ``` **响应:** ```json { "id": 1, "taskName": "数据同步任务", "status": "DRAFT", ... } ``` ### 查询任务 **GET** `/api/task/{id}` ### 更新任务 **PUT** `/api/task/{id}` ### 删除任务 **DELETE** `/api/task/{id}` ### 分页查询任务 **GET** `/api/task/list` | 参数 | 类型 | 必需 | 说明 | |------|------|------|------| | taskName | string | 否 | 任务名称(模糊查询) | | taskGroup | string | 否 | 任务分组 | | status | string | 否 | 状态 | | page | int | 否 | 页码,默认1 | | pageSize | int | 否 | 每页大小,默认20 | ### 启动任务 **POST** `/api/task/{id}/start` ### 停止任务 **POST** `/api/task/{id}/stop` ### 暂停任务 **POST** `/api/task/{id}/pause` ### 恢复任务 **POST** `/api/task/{id}/resume` ### 立即执行一次 **POST** `/api/task/{id}/execute` ### 获取运行中的任务 **GET** `/api/task/running` ### 获取任务统计 **GET** `/api/task/stats` ### 获取最近执行时间 **GET** `/api/task/{id}/next-fire-times?n=5` ### 验证Cron表达式 **GET** `/api/task/validate-cron?cronExpression=0/5 * * * * ?` --- ## 执行记录管理 ### 查询任务执行记录 **GET** `/api/task/log/task/{taskId}` ### 查询所有执行记录 **GET** `/api/task/log/list` ### 条件查询 **GET** `/api/task/log/query` | 参数 | 类型 | 必需 | 说明 | |------|------|------|------| | taskId | long | 否 | 任务ID | | status | string | 否 | 执行状态 | | startTime | string | 否 | 开始时间(yyyy-MM-dd HH:mm:ss) | | endTime | string | 否 | 结束时间 | ### 根据批次号查询 **GET** `/api/task/log/batch/{batchNo}` ### 查询可重试的失败记录 **GET** `/api/task/log/retryable?maxRetries=3` ### 清理旧日志 **DELETE** `/api/task/log/cleanup?days=30` ### 获取今日统计 **GET** `/api/task/log/stats/today` --- ## XXL-Job兼容接口 ### 获取所有任务 **GET** `/api/xxl-job/jobinfo/pageList` ### 添加任务 **POST** `/api/xxl-job/jobinfo/add` ### 更新任务 **POST** `/api/xxl-job/jobinfo/update` ### 删除任务 **POST** `/api/xxl-job/jobinfo/remove?id={id}` ### 停止任务 **POST** `/api/xxl-job/jobinfo/stop?id={id}` ### 启动任务 **POST** `/api/xxl-job/jobinfo/start?id={id}` ### 触发任务执行 **POST** `/api/xxl-job/jobinfo/trigger?id={id}` ### 获取任务分组 **GET** `/api/xxl-job/jobgroup/pageList` --- ## 健康检查 ### 健康检查 **GET** `/actuator/health` **响应:** ```json { "status": "UP", "timestamp": "2024-01-01T12:00:00", "components": { "taskScheduler": { "status": "UP", "details": { "runningTasks": 5 } } } } ``` ### Prometheus指标 **GET** `/actuator/prometheus` --- ## 任务类型 | 类型 | 说明 | |------|------| | BEAN | Spring Bean任务,通过Bean名称调用 | | CLASS | Java Class任务,通过反射调用 | | XXL_JOB | XXL-Job兼容模式 | ## 任务状态 | 状态 | 说明 | |------|------| | DRAFT | 草稿 | | RUNNING | 运行中 | | STOPPED | 已停止 | | PAUSED | 暂停 | | ERROR | 异常 | | DELETED | 已删除 | ## 执行状态 | 状态 | 说明 | |------|------| | RUNNING | 执行中 | | SUCCESS | 成功 | | FAILED | 失败 | | RETRYING | 重试中 | | TIMEOUT | 超时 | | CANCELLED | 已取消 | ## Cron表达式示例 | 表达式 | 说明 | |--------|------| | `0/5 * * * * ?` | 每5秒执行 | | `0 0 0 * * ?` | 每天零点执行 | | `0 0 8 ? * MON-FRI` | 工作日早上8点执行 | | `0 0/30 * * * ?` | 每30分钟执行 | | `0 0 12 * * ?` | 每天中午12点执行 | | `0 30 10 ? * 1-5` | 工作日早上10:30执行 | ## 错误码 | 错误码 | 说明 | |--------|------| | TASK_NOT_FOUND | 任务不存在 | | TASK_EXISTS | 任务已存在 | | INVALID_CRON | 无效的Cron表达式 | | EXECUTION_FAILED | 任务执行失败 | | CANNOT_START | 无法启动任务 | | CANNOT_STOP | 无法停止任务 | | TASK_TIMEOUT | 任务执行超时 |