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

使用限制

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

GET

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

  1. 在客户端中添加配置GET方法配置。
    此处仅介绍GET方法的配置。客户端接入SchedulerX的详细步骤,请参见Spring Boot应用接入SchedulerX
    @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://
    应答解析模式 选择应答解析模式。支持的模式如下:
    • HTTP响应码

      通过HTTP响应码应答,您需要设置标准的HTTP请求响应返回code值。

    • 自定义JSON

      返回校验key和返回校验value。

      服务端默认HTTP请求结果为JSON格式,根据填写的key和value校验结果是否成功。

      {
        code: 200,
        data: "true",
        message: "",
        requestId: "446655068791923614103381232971",
        success: true
      }

      上面的示例代码可以校验key为success,校验value:true或者校验code是否为200。

    • 自定义字符串

      按您自定义的返回字符串内容完全匹配判断任务是否执行成功。

    执行超时时间(秒) 基础版最大30秒,专业版最大120秒,超过会报错。
    cookie 格式例如key1=val1;key2=val2,多个值用半角分号(;)隔开,最大长度为300字节。
  3. 任务创建成功后,在任务管理页面的操作列单击运行一次
    出现以下结果,说明任务执行成功。Serverless HTTP 任务结果

POST

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

  1. 在客户端中添加配置POST方法配置。
    此处仅介绍POST方法的配置。客户端接入SchedulerX的详细步骤,请参见Spring Boot应用接入SchedulerX
    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://
    应答解析模式 选择应答解析模式。支持的模式如下:
    • HTTP响应码

      通过HTTP响应码应答,您需要设置标准的HTTP请求响应返回code值。

    • 自定义JSON

      返回校验key和返回校验value。

      服务端默认HTTP请求结果为JSON格式,根据填写的key和value校验结果是否成功。
      {
        code: 200,
        data: "true",
        message: "",
        requestId: "446655068791923614103381232971",
        success: true
      }
      上面的示例代码可以校验key为success,校验value:true或者校验code是否为200。
    • 自定义字符串

      按您自定义的返回字符串内容完全匹配判断任务是否执行成功。

    返回校验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.6.0</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");
    //JobName可能是中文,需要URLDecode。
    String decodedJobName = URLDecoder.decode(jobName, "utf-8");
    System.out.println("user=" + user + ", jobId=" + jobId + ", jobName=" + decodedJobName);
    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任务支持错误报警,针对上述超时以及返回值不符合预期用户可以在创建任务时设置报警信息,接收相应的报警信息。

报警设置