全部产品
云市场

接入阿里云(非 EDAS)部署的应用

更新时间:2019-08-19 17:00:57

您可以使用 SchedulerX 2.0 为您部署在阿里云上的独立 Java 应用、使用 Spring 或 Spring Boot 框架的应用快速接入分布式任务调度能力。

前提条件

由于 SchedulerX 是 EDAS 的组件,所以在使用 SchedulerX 为应用接入任务调度能力前,需要先在 EDAS 完成以下工作:

  • 开通 EDAS 服务,并在组件中心中开通分布式任务调度 2.0(免费)。
  • 创建命名空间(可选)

操作流程

应用接入任务调度能力的流程如下:

  1. 在 EDAS 控制台创建任务调度分组。

  2. 为应用接入任务调度。

  3. 将应用部署到阿里云。

创建应用分组

您需要首先为应用创建任务调度分组。该分组的 Group ID 将作为应用接入任务调度的配置参数。

  1. 登录 EDAS 控制台

  2. 在左侧导航栏中选择组件中心 > 分布式任务调度 2.0,然后在左侧导航栏单击应用管理

  3. 应用管理页面选择地域命名空间,然后单击创建

    创建应用分组

  4. 创建应用分组对话框单击应用名右侧下拉框,在下拉列表中选择应用,在 Group ID 右侧的文本框中输入任务分组名称,然后单击确定

    GroupId 建议取一个有业务含义的,比如 tmall.order。Group ID 要求在当前命名空间内唯一,否则将创建失败。

    创建应用分组

  5. 创建完成后,自动返回应用管理页面,在应用列表中查看应用分组是否已存在。

    下面配置的 Namespace 指的是任务调度系统的命名空间列表的命名空间 ID。

    命名空间

为应用接入任务调度

您需要在应用程序中接入任务调度,主要包含以下 2 步:

  1. 初始化 SchedulerxWorker
  2. 新建实现任务调度的类
  3. 将应用部署到阿里云

步骤一:初始化 SchedulerxWorker

针对不同应用,在初始化 SchedulerxWorker 的时候会有所区别,下面分别说明:

独立 Java 应用

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

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

    1. <dependency>
    2. <groupId>com.aliyun.schedulerx</groupId>
    3. <artifactId>schedulerx2-worker</artifactId>
    4. <version>${schedulerx2.version}</version>
    5. </dependency>
  2. 在 main 函数中初始化 SchedulerxWorker。

    初始化 SchedulerxWorker 时,会用到您部署应用的地域(Region)和对应的 Endpoint。它们的关系如下表所示。

    region endpoint
    华东1(杭州) addr-hz-internal.edas.aliyun.com
    华东2(上海) addr-sh-internal.edas.aliyun.com
    华北2(北京) addr-bj-internal.edas.aliyun.com
    华南1(深圳) addr-sz-internal.edas.aliyun.com
    测试(华东1) acm.aliyun.com
    1. private static void initSchedulerxWorker() throws Exception {
    2. SchedulerxWorker schedulerxWorker = new SchedulerxWorker();
    3. schedulerxWorker.setEndpoint("xxxx");
    4. schedulerxWorker.setNamespace("xxxx");
    5. schedulerxWorker.setGroupId("xxxx");
    6. schedulerxWorker.setAliyunAccessKey("xxxx");
    7. schedulerxWorker.setAliyunSecretKey("xxxx");
    8. schedulerxWorker.init();
    9. }

    说明

    • 一个应用如果有不止一个业务,或者想把定时任务进行归类,可以建立多个分组。比如应用名是 animals,新建两个分组 animals.dogsanimals.cats。此时不用申请两批实例分别接入 2 个分组,一个应用可以同时接入 2 个分组,在客户端中将这 2 个分组配置到groupId=后面,如groupId=animals.dogs,animals.cats即可。

    • 在初始化 SchedulerxWorker 客户端时,根据实际业务,如果还有其它配置需求,可以参考 SchedulerxWorker 配置参数说明增加配置。

Spring 应用

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

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

    1. <dependency>
    2. <groupId>com.aliyun.schedulerx</groupId>
    3. <artifactId>schedulerx2-worker</artifactId>
    4. <version>${schedulerx2.version}</version>
    5. </dependency>
  2. 在 xml 配置文件中初始化 SchedulerxWorker(注入 Bean)。

    初始化 SchedulerxWorker 时,会用到您部署应用的地域(Region)和对应的 Endpoint。它们的关系如下表所示。

    region endpoint
    华东1(杭州) addr-hz-internal.edas.aliyun.com
    华东2(上海) addr-sh-internal.edas.aliyun.com
    华北2(北京) addr-bj-internal.edas.aliyun.com
    华南1(深圳) addr-sz-internal.edas.aliyun.com
    测试(华东1) acm.aliyun.com
    1. <bean id="schedulerxWorker" class="com.alibaba.schedulerx.worker.SchedulerxWorker">
    2. <property name="endpoint">
    3. <value>${endpoint}</value>
    4. </property>
    5. <property name="namespace">
    6. <value>${namespace}</value>
    7. </property>
    8. //填写之前创建的分组的 Group ID。可以配置多个分组,以英文逗号(,)分隔。
    9. <property name="groupId">
    10. <value>${groupId}</value>
    11. </property>
    12. <property name="aliyunAccessKey">
    13. <value>${aliyunAccessKey}</value>
    14. </property>
    15. <property name="aliyunSecretKey">
    16. <value>${aliyunSecretKey}</value>
    17. </property>
    18. </bean>

Spring Boot 应用

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

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

    1. <dependency>
    2. <groupId>com.aliyun.schedulerx</groupId>
    3. <artifactId>schedulerx2-spring-boot-starter</artifactId>
    4. <version>${schedulerx2.version}</version>
    5. </dependency>
  2. 初始化 SchedulerxWorker。

    初始化 SchedulerxWorker 时,会用到您部署应用的地域(Region)和对应的 Endpoint。它们的关系如下表所示。

    region endpoint
    华东1(杭州) addr-hz-internal.edas.aliyun.com
    华东2(上海) addr-sh-internal.edas.aliyun.com
    华南1(深圳) addr-sz-internal.edas.aliyun.com
    华北2(北京) addr-bj-internal.edas.aliyun.com
    测试(华东1) acm.aliyun.com

    application.properties文件中添加之前创建的任务分组的 Group ID。

    说明:一个应用如果有不止一个业务,或者想把定时任务进行归类,可以建立多个分组。比如应用名是 animals,新建两个分组 animals.dogsanimals.cats。此时不用申请两批实例分别接入 2 个分组,一个应用可以同时接入 2 个分组,在客户端中将这 2 个分组配置到groupId=后面,如groupId=animals.dogs,animals.cats即可。

    1. spring.schedulerx2.endpoint=${endpoint}
    2. spring.schedulerx2.namespace=${namespace}
    3. spring.schedulerx2.groupId=${groupId}
    4. spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey}
    5. spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}

步骤二:新建实现调度任务的类

在应用中增加类JobProcessor,实现任务调度。本文介绍如何实现最简单的定时打印“Hello SchedulerX2.0”的调度任务,JobProcessor 的代码如下。如果您想使用其它调度任务,请参见 Demo 示例。

  1. package com.aliyun.schedulerx.test.job;
  2. import com.alibaba.schedulerx.worker.domain.JobContext;
  3. import com.alibaba.schedulerx.worker.processor.JavaProcessor;
  4. import com.alibaba.schedulerx.worker.processor.ProcessResult;
  5. @Component
  6. public class MyHelloJob extends JavaProcessor {
  7. @Override
  8. public ProcessResult process(JobContext context) throws Exception {
  9. System.out.println("hello schedulerx2.0");
  10. return new ProcessResult(true);
  11. }
  12. }

将应用部署到阿里云

将应用打包,并部署到阿里云。您可以继续使用之前的部署方式部署,也可以使用 Alibaba Cloud Toolkit 部署,详情请参见将应用部署到 ECS

结果验证

  1. 登录 EDAS 控制台

  2. 在左侧导航栏中选择组件中心 > 分布式任务调度 2.0,然后在左侧导航栏单击应用管理

  3. 应用管理页面选择之前创建的任务分组所在地域命名空间,然后在该分组的操作列单击连接机器

    • 如果接入成功,可以看到机器列表。
    • 如果接入失败,会弹出暂无可用机器的提示信息。处理办法请参见SchedulerX 常见问题

后续操作

在您的应用接入调度任务并部署到阿里云后,就可以创建调度任务了。详情请参见创建调度任务