HTTP任务

更新时间:
复制 MD 格式

HTTP类型任务通过HTTP/HTTPS协议调度执行任务,无需接入SDK,即可实现跨语言、跨平台的任务调度。支持Kubernetes环境接入与非Kubernetes环境接入两种接入方式。

前提条件

如当前引擎版本低于2.3.0,需升级至2.3.0及以上版本。

重要

升级过程实例将发生重启。

优势

  • 存量业务零改造接入。

  • 多语言统一解决方案。

  • 支持AI Agent和工作流场景。

HTTP任务接入方式

Kubernetes环境接入

Kubernetes环境接入是指将Kubernetes集群中的Service与应用进行绑定,以支持HTTP任务的调度。绑定完成后,该应用下的所有任务可共享对应Service关联的Pod资源。

当用户在应用中配置K8s Service后,调度中心会自动获取相关Pod实例信息。任务配置时仅需指定HTTP请求路径,无需设置具体Pod地址。在定时触发执行时,调度中心依据预设的路由策略向目标Pod发送HTTP请求。任务执行结果将被记录,并推送至SLS日志系统,便于后续查看与分析。

image.png

调度中心通过服务发现线程周期性检测Pod的扩缩容事件及异常状态,自动将最新的Pod实例信息同步至Pod管理器,实现对Pod集群的动态监控与状态维护。

Pod管理器负责维护Pod的网络地址与健康状态,并支持多种任务路由策略。除单实例路由外,还提供广播分片路由模式,在触发一次任务时,可向目标服务下的所有Pod实例广播请求。调度中心在HTTP请求头中注入分片上下文信息(包括分片索引、分片总数等参数),以支持用户在任务执行过程中进行细粒度的逻辑控制与数据划分。

Kubernetes环境接入

在非Kubernetes环境中,通过在应用层面配置HTTP目标域名,实现应用级的统一域名管理与路由策略控制。当应用绑定多个域名后,其下属所有任务将共享这些域名配置。

用户在应用层级进行域名绑定,调度中心通过域名管理器维护域名信息。任务创建时仅需配置请求路径,无需指定域名。任务触发时,调度中心依据预设的路由策略自动选择合适的域名,并将请求发送至网关。网关完成鉴权、流量控制及负载均衡等处理后,转发请求至目标服务,执行结果最终同步至SLS日志服务。

image.png

域名管理器负责维护域名信息,支持域名的添加、删除、修改操作及标签路由配置,可根据业务标签实现流量分发,并支持多种路由策略,以满足不同的调度与负载均衡需求。

接入方式对比

对比维度

Kubernetes环境:通过Service接入

Kubernetes环境:通过网关接入

接入模式

基于Kubernetes Service直接访问后端Pod实例

通过统一网关代理请求,转发至目标域名服务

服务发现机制

主动监听Endpoint变化,动态维护Pod列表

不支持服务发现,不感知后端节点状态

执行目标粒度

可调度到具体Pod IP和端口,实现点对点直连调用

请求发送至网关,由网关完成内部负载均衡和实例路由,调度中心无法感知真实后端节点

路由策略

支持单实例路由策略和广播分片

不支持路由策略,使用网关的路由策略

广播分片

原生支持广播分片模式,适用于大规模并行批处理场景

不支持广播分片,所有任务均为单点执行,无法实现跨节点协同处理

健康状态管理

实时同步Endpoint状态,自动剔除未就绪或已终止的Pod

依赖用户手动维护域名可用性

扩展性与灵活性

适配云原生环境,支持弹性伸缩、滚动发布等场景

更适合传统架构或异构系统集成,兼容性强,易于与现有网关体系对接

应用场景

容器化微服务、跑批作业分片执行、高并发定时任务

非容器环境、混合部署架构、遗留系统接入、需统一网关治理的企业级API调度

接入步骤

  1. 登录MSE XXL-JOB控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择任务调度 > XXL-JOB

  3. 单击进入目标实例,在左侧导航栏的应用管理,然后单击创建应用,应用类型选择Http应用,然后单击确定

  4. 接入HTTP执行器,具体步骤参见HTTP应用接入执行器

  5. 在左侧导航栏选择任务管理,然后单击创建任务,关联应用选择步骤3创建的应用,任务类型选择HTTP。您还可以根据业务需要填写任务描述优先级任务权重以及输入参数(支持JSON格式)等信息。

  6. 配置HTTP任务的请求域名、Path、请求方式、超时时间。其中请求方式支持选择GET、POSTHTTP方法,超时时间以秒为单位。

  7. 配置HTTP任务的请求参数,根据需求填写Header、Query、Body。其中Body支持form-datax-www-form-urlencodedraw-json三种数据格式,可通过+添加按钮新增多组参数。

  8. 配置HTTP任务响应定义,包括成功响应解析模式与成功结果解析模式,解析模式提供响应码、响应体与响应Body三种解析类型。例如,选择HTTP响应码作为解析模式时,需在HTTP响应码字段填写预期的响应码值(如200)作为成功判定条件。

  9. 配置HTTP任务的失败重试,包括失败重试次数、重试间隔时间。当失败重试次数大于0,即任务失败后需要进行重试时,还可配置重试域名和接口Path,使任务失败后请求该域名和Path。其中任务失败重试间隔以秒为单位。

测试HTTP任务

HTTP任务创建完成后,可运行一次任务,并查看任务的执行记录详情和日志。

任务成功示例

任务执行记录列表中,每条记录展示任务执行ID、任务ID/名称、AppName、开始/结束时间、耗时、状态、执行节点等信息。成功执行的任务状态显示为成功,可通过详情日志操作入口查看调度详情和运行日志。

调度详情-基本信息

基本信息页签中可以查看本次调度的关键信息,包括任务执行ID、任务ID、调度类型(如API调度)、任务名称、重试次数、路由策略(如轮询)、调度时间、开始/结束时间、执行耗时、执行节点(目标服务的HTTP地址)和调度人。

调度详情-输入输出

输入输出页签中可以查看本次任务调度的输入参数和接口返回的输出结果,成功示例的输出为接口返回的JSON数据,例如{"name":"test-user","age":10,"email":null,"status":null}

日志记录

2025-08-22 11:34:54 | Succeed { "name":"test-user","age":10,"email":null,"status":null} | WorkerAddr: http://10.5.55.236:8084/api/post/form

2025-08-22 11:34:53 | Running | request params={"url":"http://10.5.55.236:8084/api/post/form","method":"POST","headers":{"schedulerx-dataTimestamp":"1755833940000","schedulerx-groupId":"xxx-test-sync-http","schedulerx-user":"xxx","schedulerx-jobExecutionId":"xxx","schedulerx-jobName":"xxx","schedulerx-attempt":"0","schedulerx-maxAttempt":"3","schedulerx-jobId":"35"},"body":{"contentType":"multipart/form-data","formData":{"name":"test-user","age":"10"}}}

2025-08-22 11:34:52 | Scheduled | TriggerType: api_run | WorkerAddr: http://10.5.55.236:8084/api/post/form

任务失败示例

任务执行记录列表中,失败任务的状态显示为失败(带红色错误图标),可通过操作列提供的详情日志重跑入口排查问题或重新执行任务。

调度详情-基本信息

基本信息页签中可以查看失败任务的完整调度信息,包括任务执行ID、任务ID、调度类型、任务名称、重试次数、路由策略、调度时间、开始/结束时间、执行耗时、执行节点和调度人等,用于定位故障原因。

调度详情-输入输出

输入输出页签中可以查看失败任务的输入参数和输出。失败示例的输出为具体错误信息,例如Connection refused,可据此判断故障原因。

日志记录

2025-08-22 11:39:20 | Failed | Connection refused | WorkerAddr: http://10.5.55.236:8083/api/post/form

2025-08-22 11:39:19 | Running | request params={"url":"http://10.5.55.236:8083/api/post/form","method":"POST","headers":{"schedulerx-dataTimestamp":"1755833940000","schedulerx-groupId":"xxx-test-sync-http","schedulerx-user":"xxx","schedulerx-jobExecutionId":"xxx","schedulerx-jobName":"xxx","schedulerx-attempt":"0","schedulerx-maxAttempt":"3","schedulerx-jobId":"35"},"body":{"contentType":"multipart/form-data","formData":{"name":"test-user","age":"10"}}}

2025-08-22 11:39:19 | Scheduled | TriggerType: api_run | WorkerAddr: http://10.5.55.236:8083/api/post/form

HTTP任务请求头

MSE-XXLJOB在执行HTTP任务时,会向请求Header中添加以下系统参数:

名称

含义

示例值

schedulerx-appId

应用ID

12

schedulerx-jobId

任务ID

35

schedulerx-jobName

任务名称

http-test-job

schedulerx-scheduleTimestamp

调度时间戳(毫秒)

1760164985000

schedulerx-dataTimestamp

数据时间(毫秒)

1760164980000

schedulerx-user

用户信息

1344371792

schedulerx-maxAttempt

最大重试次数

3

schedulerx-attempt

当前重试次数

1

schedulerx-jobExecutionId

任务执行ID

1417474640397221891

schedulerx-logId

分片ID(广播分片)

1417474640531439619

schedulerx-shardingIndex

分片序号(广播分片)

0

schedulerx-shardingTotal

分片总数(广播分片)

3