SchedulerX 2.0支持调度HTTP任务,包含Serverless、Agent两种执行方式,通过控制台配置后即可使用。本文介绍如何在控制台配置HTTP任务。
前提条件
Serverless执行方式:通过云函数或无服务器架构触发HTTP任务。适用于公网API调用和轻量级任务。
Agent执行方式:通过在目标设备上安装SchedulerX Agent执行HTTP任务,需要提前部署schedulerxAgent。适用于内网服务调用和需要复杂处理的场景。
Serverless和Agent模式选择,您可以在控制台创建HTTP任务时,选择执行方式配置项为Serverless或者Agent。
执行方式
Serverless、Agent两种执行方式的区别与使用限制如下所示:
执行模式 | Serverless | Agent |
执行模式 | Serverless | Agent |
是否需要接入客户端 | 否,请求由SchedulerX发起调用。 | 是,请求由接入的用户端发起调用。 |
请求方式 | 目前支持GET、POST。 | |
结果解析 | HTTP请求返回结果需为JSON格式,服务端通过解析指定Key的值与设定值是否一致判断本次请求是否成功。 | |
是否支持秒级任务 | 否,仅支持到分钟级别。 | 是。 |
是否支持内部URL | 否,Serverless执行方式下,请求URL需要有公网权限,如果HTTP接口地址的格式为ip:port,需要机器开通公网权限。 | 是。 |
任务名解析 | 如果任务名是中文,后端可通过 |
如何创建HTTP任务
您可以通过GET和POST两种请求方式,创建HTTP任务。
步骤一:基本配置
部署可访问的HTTP服务。
如果已具备可访问的HTTP服务,继续步骤 2中在MSE控制台创建HTTP任务。确保已经准备好目标HTTP服务的URL、请求方法(如 GET 或 POST)以及其他相关配置信息。
尚未部署HTTP服务。请参考以下使用Java语言开发HTTP接口的示例代码:
@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; }
在MSE SchedulerX控制台中创建HTTP任务。
HTTP任务GET方法的相关配置如下所示。关于创建调度任务,请参见创建调度任务。
部署可访问的HTTP服务。
如果已具备可访问的HTTP服务,继续步骤 2中在MSE控制台创建HTTP任务。确保已经准备好目标HTTP服务的URL、请求方法(如 GET 或 POST)以及其他相关配置信息。
尚未部署HTTP服务。请参考以下使用Java语言开发HTTP接口的示例代码:
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; }
在MSE SchedulerX控制台中创建HTTP任务。
HTTP任务POST方法相关配置信息如下所示。关于创建调度任务,请参见创建调度任务。
Serverless HTTP和Agent HTTP任务参数说明:
Serverless HTTP与Agent HTTP执行方式在MSE控制台配置项相同。
配置项 | 描述 |
高级配置 |
配置项 | 描述 |
任务名 | 自定义任务名称。 |
描述 | 任务描述,尽量简洁地描述业务,便于后续搜索。 |
应用ID | 任务所属分组。可以在下拉列表中选择。 |
任务类型 | 指任务所实现的语言,当前选择HTTP类型。 |
完整的url | 需要填写完整的URL,以HTTP或者HTTPS开头。 |
请求方式 | 选择GET/POST请求方式。 |
应答解析模式 | 选择应答解析模式。支持的模式如下:
|
选择应答解析模式为http响应码时: | |
http响应码 | 设置HTTP响应码Code,默认为200。 |
选择应答解析模式为自定义JSON时: | |
返回校验key | 仅支持返回值JSON格式,成功返回校验Key。 |
返回校验value | 仅支持返回值JSON格式,成功返回校验Value。 |
选择应答解析模式为自定义字符串时: | |
自定义字符串 | 设置自定义字符串。 |
执行超时时间 |
|
ContentType | 当请求方式为POST时,指定请求体的数据格式,支持的数据格式如下:
|
post参数 | 当请求方式为POST时,指定POST表单参数,示例如下:
|
cookie | 例如 |
执行方式 |
|
高级配置 | |
任务失败重试次数 | 任务执行失败后重试次数,默认为0次。 |
任务失败重试间隔 | 任务执行失败后重试间隔,默认为30,单位秒。 |
任务并发数 | 同一个任务同一时间允许运行的最大实例个数,1表示不允许重复执行。如果超过并发数,会跳过当前调度。 |
清理策略 | 任务执行历史记录的清理策略,默认为保留最近N条,N为保留记录数。
|
保留记录数 | 任务历史执行记录的保留记录数,默认300条。 |
步骤二:定时配置
在定时配置配置向导页,设置定时参数和高级配置参数,然后单击下一步。
定时参数说明如下:
配置名称 | 意义 |
高级配置 |
配置名称 | 意义 |
时间类型 |
|
cron表达式(仅适用于cron时间类型) | 填写Cron表达式。可以直接按照Cron语法填写,也可以使用工具生成并验证。 |
固定频率(仅适用于fixed_rate时间类型) | 填写固定频率,单位为秒,只支持60秒以上。例如,200表示每200s调度一次。 |
固定延迟(仅适用于second_delay时间类型) | 填写固定延迟,单位为秒。范围为1秒~60秒。例如,5表示延迟5秒触发调度。 |
调度时间(仅适用于one_time时间类型) | 选择日期和时间。例如, |
高级配置 | |
时间偏移 | 数据时间相对于调度时间的偏移,可以在调度时从上下文获取该值。 |
时区 | 可以根据实际情况选择不同时区,包括一些常用国家或地区,也包括标准的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;
@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常量基本信息如下所示:
CommonConstants常量 | key | value描述 |
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。
任务执行失败时,单击详情可查看具体失败原因,如下所示:
返回值和期望不相同。
执行超时。
- 本页导读 (1)
- 前提条件
- 执行方式
- 如何创建HTTP任务
- 步骤一:基本配置
- 步骤二:定时配置
- 步骤三:通知配置
- 如何获取任务基本信息
- 任务常量定义与说明
- 结果验证