您可以为您的Spring Boot应用快速接入SchedulerX,实现分布式任务调度能力。

Spring Boot应用客户端接入SchedulerX

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

    请参见客户端版本说明schedulerx2.version使用最新客户端版本。

    <dependency>
     <groupId>com.aliyun.schedulerx</groupId>
     <artifactId>schedulerx2-spring-boot-starter</artifactId>
     <version>${schedulerx2.version}</version>
    </dependency>                   
  2. application.properties文件中设置相关参数,初始化SchedulerxWorker。
    • 初始化SchedulerxWorker时,会用到您部署应用的地域(Region)和对应的Endpoint。详情请参见Endpoint列表
    • namespace为命名空间ID,可以在控制台命名空间页面获取。命名空间
    • groupId为应用ID,appKey为应用key,可以在控制台应用管理页面获取。应用列表-groupId和appKey
    • aliyunAccessKey和aliyunSecretKey为阿里云账号的AccessKeyID和AccessKeySecret,可以在用户信息管理控制台的安全信息管理页面获取。
    spring.schedulerx2.endpoint=${endpoint}
    spring.schedulerx2.namespace=${namespace}
    spring.schedulerx2.groupId=${groupId}
    # 1.2.1及以上版本设置appKey
    spring.schedulerx2.appKey=${appKey}
    
    # 1.2.1以下版本设置AK/SK
    #spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey}
    #spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}                  
    说明 一个应用如果包含多个业务,或者想把定时任务进行归类,可以建立多个分组,例如应用animals新建了两个分组animals.dogsanimals.cats。此时不用申请两批实例分别接入这两个分组,在应用客户端中将这两个分组配置到groupId=后面即可,例如groupId=animals.dogs,animals.cats

    如果还有其它需求,请参考下表中的参数进行配置。

    key 描述 起始版本
    spring.schedulerx2.enabled 是否启用SchedulerX 2.0的starter,默认开启不需要设置。 0.1.7
    spring.schedulerx2.endpoint 设置Region所在的Endpoint,详情请参见Endpoint列表 0.1.7
    spring.schedulerx2.namespace 设置命名空间的UID,可以在控制台命名空间页面获取。 0.1.7
    spring.schedulerx2.groupId 应用ID,可以在控制台应用管理页面获取。 0.1.7
    spring.schedulerx2.appKey 应用key,可以在控制台应用管理页面获取。 1.2.1
    spring.schedulerx2.host 如果有多个IP(例如VPN或者多网卡),可以设置真实的IP。 0.1.7
    spring.schedulerx2.blockAppStart SchedulerX初始化失败是否block应用启动,默认为True。 1.1.0
    spring.schedulerx2.shareContainerPool 客户端所有任务执行是否共享线程池,默认为False。 1.2.1
    spring.schedulerx2.sharePoolSize 如果开启共享线程池,可以自定义线程池大小,默认为64。 1.2.1
  3. 在应用中创建类JobProcessor,实现任务调度。

    本文仅介绍如何实现一个最简单的定时打印“Hello SchedulerX2.0”JobProcessor类。

    package com.aliyun.schedulerx.test.job;
    
    import com.alibaba.schedulerx.worker.domain.JobContext;
    import com.alibaba.schedulerx.worker.processor.JavaProcessor;
    import com.alibaba.schedulerx.worker.processor.ProcessResult;
    
    @Component
    public class MyHelloJob extends JavaProcessor {
    
        @Override
        public ProcessResult process(JobContext context) throws Exception {
            System.out.println("hello schedulerx2.0");
            return new ProcessResult(true);
        }
    }              

结果验证

  1. 客户端接入完成,将该应用发布到阿里云。
  2. 登录分布式任务调度平台
  3. 在顶部菜单栏选择地域
  4. 在左侧导航栏单击应用管理
  5. 应用管理页面查看实例总数
    • 如果实例总数为0,则说明应用接入失败。请检查、修改本地应用。
    • 如果实例总数不为0,显示接入的实例个数,则说明应用接入成功。在操作列单击查看实例,即可在连接实例对话框中查看实例列表。
    应用管理-实例总数

后续步骤

应用接入SchedulerX完成后,即可在分布式任务调度平台创建调度任务。详情请参见创建调度任务