創(chuàng)建任務(wù)并返回任務(wù)ID。
調(diào)試
您可以在OpenAPI Explorer中直接運(yùn)行該接口,免去您計(jì)算簽名的困擾。運(yùn)行成功后,OpenAPI Explorer可以自動(dòng)生成SDK代碼示例。
授權(quán)信息
請(qǐng)求參數(shù)
名稱 | 類型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
RegionId | string | 是 | 地域 ID。 | cn-hangzhou |
Namespace | string | 是 | 命名空間 ID,在控制臺(tái)的命名空間頁面中獲取。 | adcfc35d-e2fe-4fe9-bbaa-20e90ffc**** |
NamespaceSource | string | 否 | 特殊第三方才需要填寫。 | schedulerx |
GroupId | string | 是 | 應(yīng)用 ID,在控制臺(tái)的應(yīng)用管理頁面中獲取。 | testSchedulerx.defaultGroup |
JobType | string | 是 | 任務(wù)類型,目前支持以下幾種任務(wù)類型:
| java |
Name | string | 是 | 任務(wù)名。 | helloworld |
Description | string | 否 | 任務(wù)描述。 | Test |
ExecuteMode | string | 是 | 任務(wù)執(zhí)行模式,目前支持以下幾種任務(wù)執(zhí)行模式:
枚舉值:
| standalone |
ClassName | string | 否 | 任務(wù)接口類完整路徑。 當(dāng)您選擇 Java 任務(wù)類型時(shí),才有該字段且必須填寫完整路徑。 | com.alibaba.schedulerx.test.helloworld |
Content | string | 否 | 任務(wù)類型選擇為 Python/Shell/Go/K8s 時(shí),必填的腳本代碼內(nèi)容。 | echo 'hello' |
Parameters | string | 否 | 用戶自定義參數(shù),運(yùn)行時(shí)可以獲取。 | test |
MaxConcurrency | integer | 否 | 最大同時(shí)運(yùn)行實(shí)例數(shù)量,默認(rèn)值為 1,即上次觸發(fā)沒有運(yùn)行結(jié)束,即使到了運(yùn)行時(shí)刻也不會(huì)進(jìn)行下次觸發(fā)。 | 1 |
MaxAttempt | integer | 否 | 錯(cuò)誤最大重試次數(shù),根據(jù)業(yè)務(wù)需求填寫,默認(rèn)值為 0。 | 0 |
AttemptInterval | integer | 否 | 錯(cuò)誤重試間隔,單位 s,默認(rèn)值為 30。 | 30 |
PageSize | integer | 否 | 并行網(wǎng)格任務(wù)高級(jí)配置,單次拉取子任務(wù)數(shù),默認(rèn)值為 100。 | 100 |
ConsumerSize | integer | 否 | 并行網(wǎng)格任務(wù)高級(jí)配置,單機(jī)單次觸發(fā)執(zhí)行線程數(shù),默認(rèn)值為 5。 | 5 |
QueueSize | integer | 否 | 并行網(wǎng)格任務(wù)高級(jí)配置,子任務(wù)隊(duì)列緩存上限,默認(rèn)值為 10000。 | 10000 |
DispatcherSize | integer | 否 | 并行網(wǎng)格任務(wù)高級(jí)配置,子任務(wù)分發(fā)線程數(shù),默認(rèn)值為 5。 | 5 |
TimeType | integer | 是 | 時(shí)間類型,目前支持以下幾種時(shí)間類型:
| 1 |
TimeExpression | string | 否 | 時(shí)間表達(dá)式,根據(jù)選擇的時(shí)間類型設(shè)置時(shí)間表達(dá)式。
| 0 0/10 * * * ? |
Calendar | string | 否 | cron 類型可以選擇填寫自定義日歷。 | 暫不支持,不用填寫 |
DataOffset | integer | 否 | cron 類型可以選擇時(shí)間偏移,單位 s。 | 2400 |
Timezone | string | 否 | 時(shí)區(qū) | GMT+8 |
TimeoutEnable | boolean | 否 | 超時(shí)報(bào)警開關(guān)。取值如下:
| false |
Timeout | long | 否 | 超時(shí)閾值,單位 s,默認(rèn)值 7200。 | 7200 |
TimeoutKillEnable | boolean | 否 | 超時(shí)終止開關(guān)。取值如下:
| false |
FailEnable | boolean | 否 | 失敗報(bào)警開關(guān)。取值如下:
| false |
FailTimes | integer | 否 | 連續(xù)失敗報(bào)警次數(shù) | 2 |
MissWorkerEnable | boolean | 否 | 是否開啟無可用機(jī)器報(bào)警。
| false |
SuccessNoticeEnable | boolean | 否 | 成功通知開關(guān) | false |
SendChannel | string | 否 | 報(bào)警發(fā)送形式,目前只支持短信發(fā)送報(bào)警,默認(rèn)值 sms。 | sms |
TaskMaxAttempt | integer | 否 | 并行網(wǎng)格任務(wù)高級(jí)配置,子任務(wù)失敗重試次數(shù) ,默認(rèn)值為 0。 | 0 |
TaskAttemptInterval | integer | 否 | 并行網(wǎng)格任務(wù)高級(jí)配置,子任務(wù)失敗重試間隔,默認(rèn)值為 0。 | 0 |
ContactInfo | array<object> | 否 | 任務(wù)聯(lián)系人信息。 | |
object | 否 | 任務(wù)聯(lián)系人信息。 | ||
UserPhone | string | 否 | 報(bào)警接收手機(jī)號(hào)。 | 1381111**** |
UserName | string | 否 | 報(bào)警聯(lián)系人姓名。 | 張三 |
UserMail | string | 否 | 報(bào)警聯(lián)系人郵箱。 | test***@***.com |
Ding | string | 否 | 報(bào)警聯(lián)系人釘釘群機(jī)器人 webhook 地址,參考文檔:釘釘開發(fā)文檔。 | https://oapi.dingtalk.com/robot/send?access_token=********** |
Status | integer | 否 | 0:禁用,1:?jiǎn)⒂?,默認(rèn)啟用。 | 1 |
XAttrs | string | 否 | 如果是 k8s 任務(wù)類型,需要配置該參數(shù) Job 任務(wù):{"resource":"job"} Shell 任務(wù):{"image":"busybox","resource":"shell"} | {"resource":"job"} |
返回參數(shù)
示例
正常返回示例
JSON
格式
{
"Code": 200,
"Message": "message",
"RequestId": "39090022-1F3B-4797-8518-6B61095F1AF0",
"Success": true,
"Data": {
"JobId": 92583
},
"AccessDeniedDetail": {
"AuthAction": "",
"AuthPrincipalDisplayName": "",
"AuthPrincipalOwnerId": "",
"AuthPrincipalType": "",
"EncodedDiagnosticMessage": "",
"NoPermissionType": "",
"PolicyType": ""
}
}
錯(cuò)誤碼
訪問錯(cuò)誤中心查看更多錯(cuò)誤碼。
變更歷史
變更時(shí)間 | 變更內(nèi)容概要 | 操作 |
---|---|---|
2023-03-30 | API 內(nèi)部配置變更,不影響調(diào)用 | 查看變更詳情 |
2022-12-26 | API 內(nèi)部配置變更,不影響調(diào)用 | 查看變更詳情 |
2022-09-29 | API 內(nèi)部配置變更,不影響調(diào)用 | 查看變更詳情 |
2022-09-27 | OpenAPI 入?yún)l(fā)生變更 | 查看變更詳情 |
2022-06-13 | OpenAPI 入?yún)l(fā)生變更 | 查看變更詳情 |
創(chuàng)建 Java 任務(wù)
package com.alibaba.schedulerx.pop;
import java.util.ArrayList;
import java.util.List;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest.ContactInfo;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse;
public class CreateJavaJob {
public static void main(String[] args) throws Exception {
// OpenAPI 的接入點(diǎn),可查看產(chǎn)品支持的地域列表或根據(jù)購(gòu)買產(chǎn)品的地域填寫。
String regionId = "cn-shanghai";
//鑒權(quán)使用的 AccessKey ID,由阿里云官網(wǎng)控制臺(tái)獲取。
String accessKeyId = "<yourAccessKeyId>";
//鑒權(quán)使用的 AccessKey Secret,由阿里云官網(wǎng)控制臺(tái)獲取
String accessKeySecret = "<yourAccessKeySecret>";
//產(chǎn)品名稱。
String productName ="schedulerx2";
//對(duì)照支持地域列表選擇 Domain 填寫。
String domain ="schedulerx.cn-shanghai.aliyuncs.com";
//構(gòu)建 OpenAPI 客戶端。
DefaultProfile.addEndpoint(regionId, productName, domain);
DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
CreateJobRequest request = new CreateJobRequest();
request.setJobType("java");
request.setExecuteMode("standalone");
request.setDescription("test");
request.setName("helloworld");
request.setClassName("com.alibaba.schedulerx.test.helloworld");
request.setTimeType(1);
request.setTimeExpression("0 0/10 * * * ?");
request.setNamespace("xxxxx");
request.setGroupId("xxxxxxx");
// monitor
request.setTimeoutEnable(true);
request.setTimeoutKillEnable(true);
request.setFailEnable(true);
request.setTimeout(12300L);
List<ContactInfo> contactInfosList = new ArrayList<>();
ContactInfo contactInfo1 = new ContactInfo();
contactInfo1.setUserName("userA");
contactInfo1.setUserPhone("1381111****");
ContactInfo contactInfo2 = new ContactInfo();
contactInfo2.setUserName("userB");
contactInfo2.setUserPhone("1382222****");
contactInfosList.add(contactInfo1);
contactInfosList.add(contactInfo2);
request.setContactInfos(contactInfosList);
// attrs
//request.setQueueSize(123);
request.setTaskMaxAttempt(1);
request.setTaskAttemptInterval(100);
CreateJobResponse response = client.getAcsResponse(request);
if (response.getSuccess()) {
System.out.println("jobId=" + response.getData().getJobId());
} else {
System.out.println(response.getMessage());
}
}
}
創(chuàng)建 HTTP 任務(wù)
package com.alibaba.schedulerx.pop;
import com.alibaba.schedulerx.common.domain.HttpAttribute;
import com.alibaba.schedulerx.common.util.JsonUtil;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse;
public class CreateHttpJob {
public static void main(String[] args) throws Exception {
// OpenAPI 的接入點(diǎn),具體查看支持地域列表或根據(jù)購(gòu)買地域填寫。
String regionId = "cn-shanghai";
//鑒權(quán)使用的 AccessKey ID,由阿里云官網(wǎng)控制臺(tái)獲取。
String accessKeyId = "<yourAccessKeyId>";
//鑒權(quán)使用的 AccessKey Secret,由阿里云官網(wǎng)控制臺(tái)獲取。
String accessKeySecret = "<yourAccessKeySecret>";
//產(chǎn)品名稱。
String productName ="schedulerx2";
//對(duì)照支持地域列表選擇 Domain 填寫。
String domain ="schedulerx.cn-shanghai.aliyuncs.com";
//構(gòu)建 OpenAPI 客戶端。
DefaultProfile.addEndpoint(regionId, productName, domain);
DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
CreateJobRequest request = new CreateJobRequest();
request.setNamespace("xxxxxxxx");
request.setGroupId("xxxxxx");
request.setJobType("http");
request.setName("testHttpJob");
request.setDescription("testHttpJob");
request.setTimeType(1);
request.setTimeExpression("20 0/5 * * * ?");
request.setExecuteMode("standalone");
HttpAttribute httpAttribute = new HttpAttribute();
httpAttribute.setUrl("http://192.168.0.0:8080/test");
httpAttribute.setMethod("GET");
httpAttribute.setTimeout(10); //單位秒
httpAttribute.setRespKey("code");
httpAttribute.setRespValue("200");
request.setContent(JsonUtil.toJson(httpAttribute));
//POST 參數(shù),格式 key1=value1&key2=value2。
request.setParameters("key1=value1&key2=value2");
//發(fā)送請(qǐng)求。
CreateJobResponse response = client.getAcsResponse(request);
if (!response.getSuccess()) {
System.out.println(response.getMessage());
System.out.println("createApp: "+response.getRequestId());
} else {
System.out.println(JsonUtil.toJson(response));
}
}
}
創(chuàng)建一次性任務(wù)
package com.alibaba.schedulerx.pop;
import java.util.ArrayList;
import java.util.List;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest.ContactInfo;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse;
public class CreateJavaJob {
public static void main(String[] args) throws Exception {
// OpenAPI 的接入點(diǎn),可查看產(chǎn)品支持的地域列表或根據(jù)購(gòu)買產(chǎn)品的地域填寫。
String regionId = "cn-shanghai";
//鑒權(quán)使用的 AccessKey ID,由阿里云官網(wǎng)控制臺(tái)獲取
String accessKeyId = "xxxxxx";
//鑒權(quán)使用的 AccessKey Secret,由阿里云官網(wǎng)控制臺(tái)獲取
String accessKeySecret = "xxxxxxxx";
//產(chǎn)品名稱
String productName ="schedulerx2";
//對(duì)照支持地域列表選擇 Domain 填寫
String domain ="schedulerx.cn-shanghai.aliyuncs.com";
//構(gòu)建 OpenAPI 客戶端
DefaultProfile.addEndpoint(regionId, productName, domain);
DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
CreateJobRequest request = new CreateJobRequest();
request.setJobType("java");
request.setExecuteMode("standalone");
request.setDescription("test");
request.setName("helloworld");
request.setClassName("com.alibaba.schedulerx.test.helloworld");
request.setTimeType(5);
request.setTimeExpression("2021-12-30 12:12:12");
request.setNamespace("xxxxxx");
request.setGroupId("xxxxxxx");
// 報(bào)警監(jiān)控
request.setTimeoutEnable(true);
request.setTimeoutKillEnable(true);
request.setFailEnable(true);
request.setTimeout(12300L);
// 高級(jí)配置
request.setMaxAttempt(3);
request.setAttemptInterval(30);
CreateJobResponse response = client.getAcsResponse(request);
if (response.getSuccess()) {
System.out.println("jobId=" + response.getData().getJobId());
} else {
System.out.println(response.getMessage());
}
}
}