SchedulerX支持Serverless的HTTP任务,包含GET和POST两种方法,无需依赖Client,在控制台配置完即可生效使用。

使用限制

  • 目前只支持GET、POST,后续根据用户需求陆续开通其他方法
  • HTTP请求返回结果必须是JSON格式,服务需要解析指定key比较本次请求是否成功
  • 不支持秒级任务,支持到分钟级别
  • 请求URL需要有公网权限,如果是IP:port,需要机器开通公网权限

GET

使用HTTP的GET方法,需要在客户端中添加配置,然后在控制台中创建任务。

  1. 在客户端中添加配置GET方法配置。
    客户端接入SchedulerX的详细步骤请参见Spring Boot 应用接入 SchedulerX,本文仅介绍GET方法的配置。
    @GET
    @Path("hi")
    @Produces(MediaType.APPLICATION_JSON)
    public RestResult hi(@QueryParam("user") String user) {
        TestVo vo = new TestVo();
        vo.setName(user);
        RestResult result = new RestResult();
        result.setCode(200);
        result.setData(vo);
        return result;
    }
  2. 在控制台创建HTTP任务。
    创建调度任务详情请参见创建调度任务,本文只介绍HTTP任务GET方法相关配置。HTTP Serverles 任务

    Serverless HTTP任务参数说明:

    参数 说明
    完整的URL 需要填写完整URL,包括http://
    返回校验key返回校验value 服务端默认HTTP请求结果为JSON格式,根据填写的key和value进行结果是否成功的校验。
    {
      code: 200,
      data: "true",
      message: "",
      requestId: "446655068791923614103381232971",
      success: true
    }
    上面的示例代码可以校验key为success,校验value:true或者校验code是否为200。
    执行超时时间(秒) 最大30秒,超过会报错。
    cookie 格式例如key1=val1;key2=val2,多个值用应用分号(;)隔开,最大长度为300字节。
  3. 任务创建成功后,在任务管理页面的操作列单击运行一次
    出现以下结果,说明任务执行成功。Serverless HTTP 任务结果

POST

使用HTTP的POST方法,需要在客户端中添加配置,然后在控制台中创建任务。

  1. 在客户端中添加配置POST方法配置。
    客户端接入SchedulerX的详细步骤请参见Spring Boot 应用接入 SchedulerX,本文仅介绍POST方法的配置。
    import com.alibaba.schedulerx.common.constants.CommonConstants;
    
    @POST
    @Path("createUser")
    @Produces(MediaType.APPLICATION_JSON)
    public RestResult createUser(@FormParam("userId") String userId, 
            @FormParam("userName") String userName) {
        TestVo vo = new TestVo();
        System.out.println("userId=" + userId + ", userName=" + userName);
        vo.setName(userName);
        RestResult result = new RestResult();
        result.setCode(200);
        result.setData(vo);
        return result;
    }
  2. 在控制台创建HTTP任务。
    创建调度任务详情请参见创建调度任务,本文只介绍HTTP任务POST方法相关配置。Serverless HTTP POST

    Serverless HTTP任务参数说明:

    参数 说明
    完整的URL 需要填写完整URL,包括http://
    返回校验key返回校验value 服务端默认HTTP请求结果为JSON格式,根据填写的key和value进行结果是否成功的校验。
    {
      code: 200,
      data: "true",
      message: "",
      requestId: "446655068791923614103381232971",
      success: true
    }
    上面的示例代码可以校验key为success,校验value:true 或者校验code是否为200。
    执行超时时间(秒) 最大30秒,超过会报错。
    参数 POST表单参数,格式例如key1=val1;key2=val2

如何获取任务基本信息

HTTP任务,会将任务基本信息打入header中,如果想获取任务的基本信息,可以在客户端的pom.xml中增加一个以下依赖。

<dependency>
    <groupId>com.aliyun.schedulerx</groupId>
    <artifactId>schedulerx2-common</artifactId>
    <version>1.1.5-SNAPSHOT</version>
</dependency>

以GET方法为例,通过以下方式获取任务基本信息。

import com.alibaba.schedulerx.common.constants.CommonConstants;

@GET
@Path("hi")
@Produces(MediaType.APPLICATION_JSON)
public RestResult hi(@QueryParam("user") String user,
        @HeaderParam(CommonConstants.JOB_ID_HEADER) String jobId,
        @HeaderParam(CommonConstants.JOB_NAME_HEADER) String jobName) {
    TestVo vo = new TestVo();
    vo.setName("armon");
    System.out.println("user=" + user + ", jobId=" + jobId + ", jobName=" + jobName);
    RestResult result = new RestResult();
    result.setCode(200);
    result.setData(vo);
    return result;
}

可以获取的任务基本信息如下:

CommonConstants常量 key value描述
JOB_ID_HEADER schedulerx-jobId 任务ID
JOB_NAME_HEADER schedulerx-jobName 任务名,需要引文,因为header不支持中文
SCHEDULE_TIMESTAMP_HEADER schedulerx-scheduleTimestamp 调度时间的时间戳
DATA_TIMESTAMP_HEADER schedulerx-dataTimestamp 数据时间的时间戳
GROUP_ID_HEADER schedulerx-groupId 应用ID
USER_HEADER schedulerx-user 用户名
MAX_ATTEMPT_HEADER schedulerx-maxAttempt 实例最大重试次数
ATTEMPT_HEADER schedulerx-attempt 实例当前重试次数
JOB_PARAMETERS_HEADER schedulerx-jobParameters 任务参数
INSTANCE_PARAMETERS_HEADER schedulerx-instanceParameters 任务实例参数,需要API触发

结果验证

HTTP任务执行结果在执行列表页可以进行查询,成功结果可参见GET中的结果。

如果失败可以单击详情查看具体失败原因,下面列举典型的失败结果。

  • 返回值和期望不相同返回值和期望不相同
  • 执行超时执行超时

报警

HTTP任务支持错误报警,针对上述超时以及返回值不符合预期用户可以在创建任务时设置报警信息,接收相应的报警信息。

报警设置