ListJobs - 获取任务列表

更新时间:

获取任务列表。

接口说明

在调用该接口前,需要在 POM 文件添加以下依赖:

<dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-schedulerx2</artifactId>
      <version>1.0.5</version>
</dependency>

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
edas:ReadSchedulerxJobQueryget
*全部资源
*

请求参数

名称类型必填描述示例值
GroupIdstring

应用 ID,在控制台的应用管理页面中获取。

DocTest.Group
Namespacestring

命名空间,在控制台的命名空间页面中获取。

1a72ecb1-b4cc-400a-a71b-20cdec9b****
NamespaceSourcestring

特殊第三方才需要填写。

schedulerx
RegionIdstring

地域 ID。

cn-hangzhou
JobNamestring

任务名称。

helloword
Statusstring

任务状态。

  • 0:表示禁用

  • 1:表示启用

1

返回参数

名称类型描述示例值
object
Codeinteger

请求状态码。

200
Messagestring

错误信息,仅出错时返回错误信息。

namespace can not find namespace: 1a72ecb1-b4cc-400a-a71b-20cdec9b****, namespaceSource:null
RequestIdstring

请求唯一 ID。

71BCC0E3-64B2-4B63-A870-AFB64EBCB58B
Successboolean

调用接口是否成功。取值如下:

  • true:成功

  • false:失败

true
Dataobject

任务列表信息。

Jobsarray<object>

任务列表及任务详情。

Jobobject
Statusinteger

任务状态。取值如下:

  • 1:启用,可以被正常触发。

  • 0:禁用,不会被触发。

1
JarUrlstring

JAR 包的 OSS 完整路径。

https:doc***.oss-cn-hangzhou.aliyuncs.com/sc-****-D-0.0.2-SNAPSHOT.jar
MaxAttemptinteger

错误最大重试次数,根据业务需求填写,默认值为 0。

0
Parametersstring

用户自定义参数,运行时可以获取。

test
Descriptionstring

任务描述。

Test
JobIdlong

任务 ID。

99341
ExecuteModestring

任务执行模式,可能出现的结果如下:

  • standalone:单机运行

  • broadcast:广播运行

  • parallel:并行计算

  • grid:内存网格

  • batch:网格计算

  • shard:分片运行

standalone
MaxConcurrencystring

最大同时运行实例数量,默认值为 1, 即上次触发没有运行结束,即使到了运行时刻也不会进行下次触发。

1
Namestring

任务名。

helloworld
ClassNamestring

任务接口类完整路径。 当您的任务是 Java 任务类型时,才有该字段信息。

com.alibaba.schedulerx.test.helloworld
Contentstring

python、shell、go 任务类型的脚本代码内容。

echo 'hello'
JobTypestring

任务类型

java
AttemptIntervalinteger

错误重试间隔,单位 s,默认值为 30。

30
MapTaskXAttrsobject

高级配置,仅限于并行计算、内存网格和网格计算使用。

TaskMaxAttemptinteger

子任务失败重试次数。

0
TaskAttemptIntervalinteger

子任务失败重试间隔。

0
ConsumerSizeinteger

单机单次触发执行线程数,默认值为 5。

5
QueueSizeinteger

子任务队列缓存上限,默认值为 10000。

10000
DispatcherSizeinteger

子任务分发线程数,默认值为 5。

5
PageSizeinteger

并行任务单次拉取子任务数,默认值为 100。

100
TimeConfigobject

时间配置信息

Calendarstring

cron 类型可以选择填写自定义日历。

工作日
TimeTypeinteger

时间配置类型,目前支持以下几种时间类型:

  • 1:cron

  • 3:fix_rate

  • 4:second_delay

  • 100:api

1
DataOffsetinteger

cron 类型可以选择时间偏移,单位 s。

0
TimeExpressionstring

时间表达式,目前支持以下几种时间表达类型:

  • api:无时间表达式。

  • fix_rate:具体固定频率值,如 30 表示每隔 30s 触发一次。

  • cron:标准的 cron 表达式。

  • second_delay:固定延迟多少秒执行一次(1s~60s 可选)。

0 0/10 * * * ?
JobMonitorInfoobject

任务监控信息。

ContactInfoarray<object>

联系人信息。

ContactInfoobject
UserPhonestring

用户手机号。

1381111****
UserNamestring

用户名称。

userA
Dingstring

钉钉群机器人 webhook 地址

https://oapi.dingtalk.com/robot/send?access_token=**********
UserMailstring

用户邮件地址

user@mail.com
MonitorConfigobject

报警开关以及阈值配置。

Timeoutlong

超时阈值,单位 s,默认 7200。

12300
SendChannelstring

报警发送形式,目前只支持 sms。

sms
TimeoutKillEnableboolean

超时终止本次触发开关,默认关闭。

  • true:开启

  • false:关闭

false
TimeoutEnableboolean

超时报警开关。取值如下:

  • true:开启

  • false:关闭

true
FailEnableboolean

失败报警开关。取值如下:

  • true:开启

  • false:关闭

true
MissWorkerEnableboolean

是否开启无可用机器报警

true
XAttrsstring

任务扩展字段

{"pageSize":5,"queueSize":10,"consumerSize":5,"dispatcherSize":5,"taskMaxAttempt":0,"taskAttemptInterval":0,"globalConsumerSize":1000,"taskDispatchMode":"push"}

示例

正常返回示例

JSON格式

{
  "Code": 200,
  "Message": "namespace can not find namespace: 1a72ecb1-b4cc-400a-a71b-20cdec9b****, namespaceSource:null",
  "RequestId": "71BCC0E3-64B2-4B63-A870-AFB64EBCB58B",
  "Success": true,
  "Data": {
    "Jobs": [
      {
        "Status": 1,
        "JarUrl": "https:doc***.oss-cn-hangzhou.aliyuncs.com/sc-****-D-0.0.2-SNAPSHOT.jar",
        "MaxAttempt": 0,
        "Parameters": "test",
        "Description": "Test",
        "JobId": 99341,
        "ExecuteMode": "standalone",
        "MaxConcurrency": "1",
        "Name": "helloworld",
        "ClassName": "com.alibaba.schedulerx.test.helloworld",
        "Content": "echo 'hello'",
        "JobType": "java",
        "AttemptInterval": 30,
        "MapTaskXAttrs": {
          "TaskMaxAttempt": 0,
          "TaskAttemptInterval": 0,
          "ConsumerSize": 5,
          "QueueSize": 10000,
          "DispatcherSize": 5,
          "PageSize": 100
        },
        "TimeConfig": {
          "Calendar": "工作日",
          "TimeType": 1,
          "DataOffset": 0,
          "TimeExpression": "0 0/10 * * * ?"
        },
        "JobMonitorInfo": {
          "ContactInfo": [
            {
              "UserPhone": "1381111****",
              "UserName": "userA",
              "Ding": "https://oapi.dingtalk.com/robot/send?access_token=**********",
              "UserMail": "user@mail.com"
            }
          ],
          "MonitorConfig": {
            "Timeout": 12300,
            "SendChannel": "sms",
            "TimeoutKillEnable": false,
            "TimeoutEnable": true,
            "FailEnable": true,
            "MissWorkerEnable": true
          }
        },
        "XAttrs": "{\"pageSize\":5,\"queueSize\":10,\"consumerSize\":5,\"dispatcherSize\":5,\"taskMaxAttempt\":0,\"taskAttemptInterval\":0,\"globalConsumerSize\":1000,\"taskDispatchMode\":\"push\"}"
      }
    ]
  },
  "AccessDeniedDetail": {
    "AuthAction": "",
    "AuthPrincipalDisplayName": "",
    "AuthPrincipalOwnerId": "",
    "AuthPrincipalType": "",
    "EncodedDiagnosticMessage": "",
    "NoPermissionType": "",
    "PolicyType": ""
  }
}

错误码

访问错误中心查看更多错误码。

变更历史

变更时间变更内容概要操作
2024-10-18OpenAPI 返回结构发生变更查看变更详情
2022-12-26API 内部配置变更,不影响调用查看变更详情
2022-11-02OpenAPI 返回结构发生变更查看变更详情

Demo

package com.alibaba.schedulerx.pop;

import java.util.List;

import com.alibaba.schedulerx.common.util.JsonUtil;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.ListJobsRequest;
import com.aliyuncs.schedulerx2.model.v20190430.ListJobsResponse;
import com.aliyuncs.schedulerx2.model.v20190430.ListJobsResponse.Data.Job;

public class TestListJobs {

    public static void main(String[] args) {
        //OpenAPI 的接入点,具体查看支持地域列表以及购买机器地域填写。
        String regionId = "cn-hangzhou";
        //鉴权使用的 AccessKey ID,由阿里云官网控制台获取。
        String accessKeyId = "XXXXXXXX";
        //鉴权使用的 AccessKey Secret,由阿里云官网控制台获取。
        String accessKeySecret = "XXXXXXXX";
        //产品名称
        String productName ="schedulerx2";
        //对照支持地域列表选择 Domain 填写
        String domain ="schedulerx.cn.hangzhou.aliyuncs.com";
        //构建 OpenAPI 客户端。
        DefaultProfile.addEndpoint(regionId, productName, domain);
        DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
        
        ListJobsRequest request = new ListJobsRequest();
        //命名空间。
        request.setNamespace("433d8b23-06e9-408c-aaaa-90d4d1b****");
        //应用 ID。
        request.setGroupId("DocTest.Group");
        ListJobsResponse response;
        try {
            response = client.getAcsResponse(request);
            if (!response.getSuccess()) {
                System.out.println(JsonUtil.toJson(response));
                System.out.println(response.getCode());
            } else {
                System.out.println(JsonUtil.toJson(response));
                List<Job> jobs = response.getData().getJobs();
                for (Job job : jobs) {
                    System.out.println("jobId:" + job.getJobId() + ", name:" + job.getName() + ", status=" + job.getStatus());
                }
            }
        } catch (ServerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
}