HTTP应用接入(不需要安装执行器)

更新时间:
复制为 MD 格式

本文介绍如何快速通过MSE XXL-JOB接入HTTP应用,实现统一的HTTP任务调度。

功能概述

HTTP应用是阿里云微服务引擎MSE XXL-JOB版提供的一种应用类型。与普通应用(需要部署执行器Agent)不同,HTTP应用允许通过配置容器服务或HTTP服务地址(域名或IP)的方式接入执行器,任务执行时系统将通过HTTP请求实现调度。

工作原理

  • Kubernetes 环境中,用户在应用下绑定集群中某个命名空间的 Service。该Service下所有Pod实例作为应用的潜在执行节点,由调度中心通过Kubernetes服务发现模块实时感知Pod列表和健康状态。image

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

核心价值

  • 无侵入接入:无需在业务系统部署Agent,通过HTTP协议即可接入任务调度。

  • 跨平台兼容:支持任何提供HTTP接口的服务,不限编程语言和框架。

  • 部署灵活:支持Kubernetes与非Kubernetes环境,支持传统ECS、物理机等多种部署形态。

  • 配置简单:只需录入HTTP服务地址,即可完成执行器接入。

应用场景

  • 外部系统对接:调用第三方HTTP服务执行定时任务。

  • Serverless函数触发:定时触发云函数或Webhook。

  • 传统应用调度:为未部署Agent的传统应用提供定时任务能力。

  • VPC调度:通过HTTP协议跨网络调度任务。

前提条件

操作步骤

创建HTTP应用

  1. 登录微服务引擎MSE控制台

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

  3. 点击目标实例ID,进入实例详情页。

  4. 在左侧导航栏选择应用管理

  5. 单击创建应用

  6. 根据以下参数完成应用配置:

    配置项

    说明

    示例值

    AppName

    应用唯一标识(英文字母、数字、下划线)

    my-http-app

    名称

    应用显示名称

    我的HTTP应用

    应用类型

    选择HTTP应用

    HTTP应用

  7. 单击确定完成应用创建。

接入执行器

Kubernetes环境通过Service接入

前提条件

已将应用部署在ACK/ACS/ACK Serverless集群,且集群与任务调度实例位于同一VPC下。

操作步骤
  1. 应用管理页面,单击目标应用执行器数量列的接入按钮。

  2. 接入执行器页面,接入方式选择接入K8s服务,并选择接入的ACK/ACS/ACK Serverless 集群命名空间选择服务

  3. 接入成功后,单击目标应用执行器数量列的查看按钮可查看该服务下Pod列表。

Kubernetes环境通过域名接入

操作步骤
  1. 应用管理列表中,找到先前步骤创建的HTTP应用。

  2. 单击执行器数量列的接入按钮。

  3. 接入方式选择手动录入

  4. 配置执行器地址:

    配置项

    说明

    示例值

    执行器地址

    HTTP服务的完整URL(包含协议和端口)

    说明

    为保障任务调度成功,需确保XXL-JOB实例与执行器地址的网络可达。

    http://192.168.1.100

    标签

    可选,用于标识执行器

    prod-server-1

  5. 单击确定完成接入配置。

创建任务

  1. 在实例详情页选择任务 > 任务管理

  2. 单击创建任务

  3. 关联应用选择先前步骤创建的应用,任务类型选择HTTP。

  4. 配置HTTP基本参数:

    配置项

    说明

    示例值

    接口Path

    请求路径,以/开头

    /api/task/execute

    请求方式

    HTTP方法

    GET / POST / PUT / DELETE

    超时时间

    请求超时时间(秒)

    10

  5. 配置HTTP请求定义(可选)

    • Header:自定义请求头。

    • Query:URL查询参数。

    • Body:请求体内容。

  6. 配置HTTP响应定义:

    说明

    示例:如果成功响应解析模式为响应体JSON,JSON解析路径配置为$.code,JSON解析期望值为200,则返回JSON格式{"code":200}表示成功,返回{"code":500}表示失败。

    配置项

    说明

    示例值

    成功响应解析模式

    判断任务成功的方式,包括以下三种解析模式:

    • 响应状态码

    • 响应体 JSON

    • 响应体 Body

    HTTP响应码

    HTTP响应码

    成功时的响应状态码

    200

    成功结果解析模式

    负责获取接口返回的数据并决定以何种模式解析,包括以下三种解析模式:

    • 响应状态码

    • 响应体 JSON

    • 响应体 Body

    HTTP响应码

  7. 单击下一步,配置定时表达式:

    配置项

    说明

    示例值

    时间类型

    调度类型

    cron

    cron表达式

    定时规则

    0 0 12 * * ?(每天12点)

  8. 点击下一步,配置通知选项(可选)

  9. 单击完成创建任务。

测试任务

  1. 任务管理列表单击新创建的任务操作运行一次,或等待任务进入定时设置触发任务。

  2. 确认执行后,在左侧菜单栏选择任务实例

  3. 查看任务执行状态和结果。

  4. 单击操作列日志可查看任务执行的日志信息。

常见问题

Q: HTTP任务执行失败,提示"Connection refused"

A: 此错误表示无法连接到执行器地址,请检查:

  1. 执行器地址是否正确(协议、IP/域名、端口)。

  2. 网络是否可达(防火墙、安全组规则)。

  3. 服务是否正常运行。

Q: 如何给HTTP任务传递动态参数?

A: 可通过以下方式传递参数:

  1. Query参数:在接口Path后添加查询参数。

  2. Body内容:POST/PUT请求时在Body中传递JSON数据。

  3. 任务输入:在创建任务时配置输入参数,通过Header传递。

Q: HTTP应用和普通应用有什么区别?

A: 主要区别如下:

对比项

普通应用

HTTP应用

执行方式

通过Agent执行JobHandler

通过HTTP请求调用接口

部署要求

需部署执行器Agent

只需HTTP服务可访问

支持任务类型

BEAN、Shell、Python

HTTP任务

适用场景

需要复杂任务逻辑的Java应用

跨语言、外部系统对接

Q: 如何实现HTTP任务的重试?

A: 在任务配置的HTTP失败重试配置中设置:

  • 任务失败重试次数:失败后的重试次数(0表示不重试)。

  • 任务失败重试间隔:每次重试的间隔时间(秒)。