全部产品
Search
文档中心

分布式任务调度 SchedulerX:One Time

更新时间:May 25, 2023

One Time即一次性任务调度,配置完成后任务将在设置的时间点执行一次,执行完成后调度平台会自动清理任务,您无需在客户端执行删除任务的操作。一次性任务调度适用于订单超时未支付、自动关闭定时日历提醒等场景。本文介绍如何通过API创建一次性调度任务。

优势

  • 精准时刻:SchedulerX的一次性任务与延时消息相比,没有固定延迟多少时间或者在多少天内的时间限制,支持未来任意时间点,使用简单。

  • 丰富的任务类型:SchedulerX一次性任务适用于所有任务类型,例如Java、HTTP、Shell任务。也适用所有分布式模型,例如单机、广播、分片、MapReduce等。

  • 可视化运维:SchedulerX的一次性任务和其他任务一样,具有可视化的界面,方便您观测和查询。并且支持在调度时间到达之前修改任务参数,支持失败自动重试等功能。

通过API创建一次性调度任务

  1. 在应用程序的pom.xml文件中添加OpenAPI的SDK依赖。

  2. 下面以一个示例代码说明如何使用SDK调用API,将timeType的参数值设置为5,表示启用一次性任务调度。

    说明

    关于如何配置环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,请参见配置方案

    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 CreateJavaJob {
    
        public static void main(String[] args) throws Exception {
            // OpenAPI 的接入点,具体查看上表支持地域列表以及购买机器地域填写
            String regionId = "public";
          	/**
             * 1.阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
             * 2.建议不要将AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
             * 3.本实例以读取环境变量方式加载AK/SK信息实现身份验证,需提前配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,
             * 用户可自行采用其他安全加密方式存储身份信息。
             */
            String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            
    				//产品名称
            String productName ="schedulerx2";
            //对照支持地域列表选择Domain填写
            String domain ="schedulerx.aliyuncs.com";
            //构建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("一次性任务测试");
            request.setClassName("com.alibaba.schedulerx.test.processor.HelloWorldJob3");
            //timeType=5表示一次性任务
            request.setTimeType(5);
            //yyyy-MM-dd HH:mm:ss
            request.setTimeExpression("2021-12-15 12:11:00");
            request.setNamespace("433d8b23-06e9-408c-aaaa-90d4d1b9a4af");
            request.setGroupId("xueren_sub");
            // 监控报警
            request.setTimeoutEnable(true);
            request.setTimeoutKillEnable(true);
            request.setFailEnable(true);
            request.setTimeout(12300L);
            // 高级配置,配置失败自动重试
            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());
            }
        }   
    }
  3. API新建任务后,登录控制台查看任务。

    1. 登录分布式任务调度平台

    2. 在左侧导航栏单击应用管理

    一次性任务