本文介绍如何快速通过MSE XXL-JOB接入HTTP应用,实现统一的HTTP任务调度。
功能概述
HTTP应用是阿里云微服务引擎MSE XXL-JOB版提供的一种应用类型。与普通应用(需要部署执行器Agent)不同,HTTP应用允许通过配置容器服务或HTTP服务地址(域名或IP)的方式接入执行器,任务执行时系统将通过HTTP请求实现调度。
工作原理
在Kubernetes 环境中,用户在应用下绑定集群中某个命名空间的 Service。该Service下所有Pod实例作为应用的潜在执行节点,由调度中心通过Kubernetes服务发现模块实时感知Pod列表和健康状态。

在非 Kubernetes 环境中,用户在应用级别绑定一个或多个业务域名,该应用下所有HTTP任务共享这些域名配置。调度中心在任务触发时结合应用上下文和路由策略选择目标域名,实现HTTP任务的执行。

核心价值
无侵入接入:无需在业务系统部署Agent,通过HTTP协议即可接入任务调度。
跨平台兼容:支持任何提供HTTP接口的服务,不限编程语言和框架。
部署灵活:支持Kubernetes与非Kubernetes环境,支持传统ECS、物理机等多种部署形态。
配置简单:只需录入HTTP服务地址,即可完成执行器接入。
应用场景
外部系统对接:调用第三方HTTP服务执行定时任务。
Serverless函数触发:定时触发云函数或Webhook。
传统应用调度:为未部署Agent的传统应用提供定时任务能力。
跨VPC调度:通过HTTP协议跨网络调度任务。
前提条件
操作步骤
创建HTTP应用
登录微服务引擎MSE控制台。
在左侧导航栏选择任务调度 > XXL-JOB 版。
点击目标实例ID,进入实例详情页。
在左侧导航栏选择应用管理。
单击创建应用。
根据以下参数完成应用配置:
配置项
说明
示例值
AppName
应用唯一标识(英文字母、数字、下划线)
my-http-app
名称
应用显示名称
我的HTTP应用
应用类型
选择HTTP应用
HTTP应用
单击确定完成应用创建。
接入执行器
Kubernetes环境通过Service接入
前提条件
已将应用部署在ACK/ACS/ACK Serverless集群,且集群与任务调度实例位于同一VPC下。
操作步骤
在应用管理页面,单击目标应用执行器数量列的接入按钮。
在接入执行器页面,接入方式选择接入K8s服务,并选择接入的ACK/ACS/ACK Serverless 集群、命名空间和选择服务。
接入成功后,单击目标应用执行器数量列的查看按钮可查看该服务下Pod列表。
非Kubernetes环境通过域名接入
操作步骤
在应用管理列表中,找到先前步骤创建的HTTP应用。
单击执行器数量列的接入按钮。
接入方式选择手动录入。
配置执行器地址:
配置项
说明
示例值
执行器地址
HTTP服务的完整URL(包含协议和端口)
说明为保障任务调度成功,需确保XXL-JOB实例与执行器地址的网络可达。
http://192.168.1.100
标签
可选,用于标识执行器
prod-server-1
单击确定完成接入配置。
创建任务
在实例详情页选择任务 > 任务管理。
单击创建任务。
关联应用选择先前步骤创建的应用,任务类型选择HTTP。
配置HTTP基本参数:
配置项
说明
示例值
接口Path
请求路径,以
/开头/api/task/execute
请求方式
HTTP方法
GET / POST / PUT / DELETE
超时时间
请求超时时间(秒)
10
配置HTTP请求定义(可选):
Header:自定义请求头。
Query:URL查询参数。
Body:请求体内容。
配置HTTP响应定义:
说明示例:如果成功响应解析模式为响应体JSON,JSON解析路径配置为$.code,JSON解析期望值为200,则返回JSON格式
{"code":200}表示成功,返回{"code":500}表示失败。配置项
说明
示例值
成功响应解析模式
判断任务成功的方式,包括以下三种解析模式:
响应状态码
响应体 JSON
响应体 Body
HTTP响应码
HTTP响应码
成功时的响应状态码
200
成功结果解析模式
负责获取接口返回的数据并决定以何种模式解析,包括以下三种解析模式:
响应状态码
响应体 JSON
响应体 Body
HTTP响应码
单击下一步,配置定时表达式:
配置项
说明
示例值
时间类型
调度类型
cron
cron表达式
定时规则
0 0 12 * * ?(每天12点)
点击下一步,配置通知选项(可选)。
单击完成创建任务。
测试任务
在任务管理列表单击新创建的任务操作列运行一次,或等待任务进入定时设置触发任务。
确认执行后,在左侧菜单栏选择任务实例。
查看任务执行状态和结果。
单击操作列日志可查看任务执行的日志信息。
常见问题
Q: HTTP任务执行失败,提示"Connection refused"
A: 此错误表示无法连接到执行器地址,请检查:
执行器地址是否正确(协议、IP/域名、端口)。
网络是否可达(防火墙、安全组规则)。
服务是否正常运行。
Q: 如何给HTTP任务传递动态参数?
A: 可通过以下方式传递参数:
Query参数:在接口Path后添加查询参数。
Body内容:POST/PUT请求时在Body中传递JSON数据。
任务输入:在创建任务时配置输入参数,通过Header传递。
Q: HTTP应用和普通应用有什么区别?
A: 主要区别如下:
对比项 | 普通应用 | HTTP应用 |
执行方式 | 通过Agent执行JobHandler | 通过HTTP请求调用接口 |
部署要求 | 需部署执行器Agent | 只需HTTP服务可访问 |
支持任务类型 | BEAN、Shell、Python等 | 仅HTTP任务 |
适用场景 | 需要复杂任务逻辑的Java应用 | 跨语言、外部系统对接 |
Q: 如何实现HTTP任务的重试?
A: 在任务配置的HTTP失败重试配置中设置:
任务失败重试次数:失败后的重试次数(0表示不重试)。
任务失败重试间隔:每次重试的间隔时间(秒)。