全部产品
阿里云办公

快速入门

更新时间:2018-12-19 16:16:00

本文主要介绍如何使用 SchedulerX 在您 EDAS 上 ECS 集群应用中配置一个简单的定时任务并执行。

如果您需要在 EDAS 的容器服务 Kubernetes 集群应用中配置调度任务,请参考如何在容器服务 K8s 集群中使用任务调度

前提条件

本地开发

  1. 启动 IntelliJ IDEA 或 Eclipse,打开您的应用程序中的 pom.xml 文件,添加 Scheduler 客户端依赖。

    1. <dependency>
    2. <groupId>com.alibaba.edas</groupId>
    3. <artifactId>schedulerX-client</artifactId>
    4. <version>2.1.5</version>
    5. </dependency>
  2. 初始化 SchedulerX 客户端。

    初始化客户端时,您会用到您的应用部署的地域对应的 regionNamedomainName,以及 groupId (调度任务分组的 ID)。地域、regionName 和 domainName 的关系如下表所示。

    集群 regionName domainName
    cn-hangzhou 华东1 schedulerx.console.aliyun.com
    cn-shanghai 华东2 schedulerx-shanghai.console.aliyun.com
    ap-southeast-1 新加坡 schedulerx-singapore.console.aliyun.com
    cn-hangzhou 金融云华东1 schedulerx-finance-hz.console.aliyun.com
    cn-shenzhen 华南1 schedulerx-huanan1.console.aliyun.com
    • 如果您的应用使用了 Spring 框架,在 xml 的配置文件中初始化 SchedulerX 客户端(注入 Bean)。

      1. <bean id="schedulerXClient" class="com.alibaba.edas.schedulerx.SchedulerXClient" init-method="init">
      2. <property name="groupId">
      3. <!-- 调度任务分组的 ID -->
      4. <value>101-1-2-5357</value>
      5. </property>
      6. <property name="regionName">
      7. <!-- 应用部署的地域对应的 regionName -->
      8. <value>cn-hangzhou</value>
      9. </property>
      10. <property name="domainName">
      11. <!-- 应用部署的地域对应的 SchedulerX 的 domainName -->
      12. <value>schedulerx-finance-hz.console.aliyun.com</value>
      13. </property>
      14. </bean>
    • 如果您的应用是独立的 Java 应用(非 Spring 框架),在 main 函数中初始化 SchedulerX 客户端。

      1. package com.schedulerx.test;
      2. import com.alibaba.edas.schedulerx.SchedulerXClient;
      3. public class schedulerxTestMain {
      4. public static void main(String[] args) {
      5. SchedulerXClient schedulerXClient = new SchedulerXClient();
      6. // 调度任务分组的 ID
      7. schedulerXClient.setGroupId("101-1-2-5357");
      8. // 应用部署的地域对应的 regionName
      9. schedulerXClient.setRegionName("cn-hangzhou");
      10. // 应用部署的地域对应的 SchedulerX 的 domainName
      11. schedulerXClient.setDomainName("schedulerx-finance-hz.console.aliyun.com");
      12. try {
      13. schedulerXClient.init();
      14. } catch (Throwable e) {
      15. e.printStackTrace();
      16. }
      17. }
      18. }
  3. 将实现简单调度任务接口 com.alibaba.edas.schedulerx.ScxSimpleJobProcessor 的类添加到您的应用程序中。

    1. package com.test.schedulerx;
    2. import java.util.Date;
    3. import com.alibaba.edas.schedulerx.ProcessResult;
    4. import com.alibaba.edas.schedulerx.ScxSimpleJobContext;
    5. import com.alibaba.edas.schedulerx.ScxSimpleJobProcessor;
    6. public class HelloWordSimpleJobProcessor implements ScxSimpleJobProcessor {
    7. public ProcessResult process(ScxSimpleJobContext context) {
    8. System.out.println("Hello World! "+new Date());
    9. //true 表示执行成功,false 表示失败
    10. return new ProcessResult(true);
    11. }
    12. }
  4. 将应用程序重新打包。

部署到 EDAS

将添加了调度任务的应用程序包,再次部署到 EDAS 中。详情请参考部署 ECS 集群应用

结果验证

  1. 参考创建任务,在 EDAS 控制台中创建调度任务。

  2. 在分布式任务管理的任务列表页面中,在您创建的任务的操作列单击单击更多,在弹出的菜单中单击连接机器

  3. 连接机器对话框中,查看该任务连接的机器的 IP 地址是否与您部署应用的 ECS 一致。

  4. 任务列表页面中您刚才创建的任务的操作列单击触发一次或根据规则自动触发。

    观察客户端的控制台,会看到每隔1秒钟打印一次Hello World!