SchedulerX 2.0支持调度HTTP任务,包含Serverless、Agent两种执行方式,通过控制台配置后即可使用。本文介绍如何在控制台配置HTTP任务。
HTTP任务简介
HTTP任务不同执行方式的区别与使用限制如下所示。
执行模式 |
Serverless |
Agent |
是否需要接入客户端 |
否,请求由SchedulerX发起调用。 |
是,请求由接入的用户端发起调用。 |
请求方式 |
目前支持GET、POST。 |
|
结果解析 |
HTTP请求返回结果需为JSON格式,服务端通过解析指定Key的值与设定值是否一致判断本次请求是否成功。 |
|
是否支持秒级任务 |
否,仅支持到分钟级别。 |
是。 |
是否支持内部URL |
否,Serverless执行方式下,请求URL需要有公网权限,如果HTTP接口地址的格式为ip:port,需要机器开通公网权限。 |
是。 |
任务名解析 |
如果任务名是中文,后端可通过
|
如何创建HTTP任务
您可以通过GET和POST两种请求方式,创建HTTP任务。
GET
使用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; }
-
在控制台创建HTTP任务。
HTTP任务GET方法的相关配置如下所示。关于创建调度任务,请参见 创建调度任务 。
Serverless HTTP任务参数说明:
配置项
说明
任务名
任务名称。
描述
任务描述。简洁地描述业务,便于后续搜索。
应用ID
选择目标应用。
任务类型
指任务所实现的语言,当前支持 Java 、 Shell 、 Python 、 Go 、 http 、 xxljob 和 DataWorks 等类型,其中 Shell 、 Python 和 Go 会弹出编辑框,在编辑框中编写任务脚本。本示例选择 http 。
完整的URL
需要填写完整的URL,包括
http://
。执行方式
本示例选择 GET 。
应答解析模式
选择应答解析模式。支持的模式如下:
-
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
仅支持返回值JSON格式,成功返回校验Key。
返回校验Value
仅支持返回值JSON格式,成功返回校验Value。
执行超时时间(秒)
基础版最大30秒,专业版最大120秒,超时将会报错。
cookie
例如
key1=val1;key2=val2
。多个值用半角分号(;)隔开,最大长度为300字节。 -
-
任务创建成功后,在 任务管理 页面的 操作 列,单击 运行一次 。
出现以下结果,表明任务执行成功。
第二步:定时配置
-
在 定时配置 配置向导页,设置定时参数和高级配置参数,然后单击 下一步 。
定时参数说明如下:
配置项
说明
时间类型
-
none :无调度方式,一般通过工作流触发。
-
cron :Cron表达式。
-
api :通过API触发。
-
fixed_rate :固定频率。
-
second_delay :秒级固定延迟。
-
onetime :一次性任务。
cron表达式(仅适用于 cron 时间类型)
填写Cron表达式。可以直接按照Cron语法填写,也可以使用工具生成并验证。
固定频率(仅适用于 fixed_rate 时间类型)
填写固定频率,单位为秒,仅支持60秒以上。例如,200表示每200s调度一次。
固定延迟(仅适用于 second_delay 时间类型)
填写固定延迟,单位为秒。范围为1秒~60秒。例如,5表示延迟5秒触发调度。
当时间类型选择Cron后,可以进行高级配置。高级配置参数说明如下:
配置名称
说明
时间偏移
数据时间相对于调度时间的偏移,可以在调度时从上下文获取该值。
时区
可以根据实际情况选择不同时区,包括一些常用国家或地区,也包括标准的GMT表达方式。
-
第三步:报警配置
HTTP任务支持错误报警,当出现上述超时以及返回值不符合预期的问题时,您可以在创建任务时设置报警条件,接收相应的报警信息。
-
在 报警配置 配置向导页,设置报警参数及联系人,然后单击 完成 。
POST
使用POST请求方式,需要在客户端中添加配置,然后在控制台中创建任务。
第一步:基本配置
-
在客户端中添加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; }
-
在控制台创建HTTP任务。
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
。 -
第二步:定时配置
在 定时配置 配置向导页,设置定时参数和高级配置参数,然后单击 下一步 。
定时参数说明如下:
配置项 |
说明 |
时间类型 |
|
cron表达式(仅适用于 cron 时间类型) |
填写Cron表达式。可以直接按照Cron语法填写,也可以使用工具生成并验证。 |
固定频率(仅适用于 fixed_rate 时间类型) |
填写固定频率,单位为秒,只支持60秒以上。例如,200表示每200s调度一次。 |
固定延迟(仅适用于 second_delay 时间类型) |
填写固定延迟,单位为秒。范围为1秒~60秒。例如,5表示延迟5秒触发调度。 |
当时间类型选择Cron后,可以进行高级配置。高级配置参数说明如下:
配置项 |
说明 |
时间偏移 |
数据时间相对于调度时间的偏移,可以在调度时从上下文获取该值。 |
时区 |
可以根据实际情况选择不同时区,包括一些常用国家或地区,也包括标准的GMT表达方式。 |
第三步:报警配置
HTTP任务支持错误报警,当出现上述超时以及返回值不符合预期的问题时,您可以在创建任务时设置报警条件,接收相应的报警信息。
-
在 报警配置 配置向导页,设置报警参数及联系人,然后单击 完成 。
如何获取任务基本信息
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;
@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 |
任务名。仅支持英文命名。 |
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 。
任务执行失败时,单击 详情 可查看具体失败原因。
-
返回值和期望不相同
-
执行超时