您可以使用SchedulerX 2.0为您在部署在非EDAS(阿里云或本地)上的独立Java应用、Spring或Spring Boot应用实现分布式任务调度能力。
前提条件
由于SchedulerX 2.0是EDAS的组件,所以在使用SchedulerX 2.0为应用接入任务调度能力前,需要先在EDAS完成以下工作:
- 开通EDAS服务,并在组件中心中开通分布式任务调度2.0(免费)。
- 创建命名空间(可选),具体操作步骤,请参见创建命名空间。
操作流程
应用接入任务调度能力的流程如下:
- 在EDAS控制台创建任务调度分组。
- 为应用接入任务调度。
- 将应用部署到阿里云。
创建任务调度分组
您需要首先为应用创建任务调度分组。该分组的Group ID将作为应用接入任务调度的配置参数。
- 登录EDAS控制台。
- 在左侧导航栏中选择组件中心 > 分布式任务调度(新)。
- 在左侧导航栏选择应用管理。
- 在应用管理页面顶部菜单栏选择地域,在页面中选择命名空间,然后单击创建应用。
- 在基本配置配置向导页,设置应用名和应用ID,然后单击下一步。
- 在报警配置配置向导页面,选择报警渠道并设置报警联系人,然后单击完成。创建完成后,自动返回应用管理页面,在应用列表中查看应用分组是否已存在。
为应用接入任务调度
您需要在应用程序中接入任务调度,主要包含以下2步:
- 初始化SchedulerxWorker。
- 新建实现任务调度的类。
- 初始化SchedulerxWorker
针对不同应用,在初始化SchedulerxWorker的时候会有所区别,下面分别说明:
- 独立Java应用
-
在应用程序的
pom.xml
文件中添加SchedulerxWorker依赖。schedulerx2.version
请使用客户端版本说明中最新客户端版本。<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-worker</artifactId> <version>${schedulerx2.version}</version> </dependency>
-
在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 华北3(张家口) addr-cn-zhangjiakou-internal.edas.aliyun.com 华南1(深圳) addr-sz-internal.edas.aliyun.com 美国(弗吉尼亚) addr-us-east-1-internal.acm.aliyun.com 测试(华东1) acm.aliyun.com private static void initSchedulerxWorker() throws Exception { SchedulerxWorker schedulerxWorker = new SchedulerxWorker(); schedulerxWorker.setEndpoint("xxxx"); schedulerxWorker.setNamespace("xxxx"); schedulerxWorker.setGroupId("xxxx"); schedulerxWorker.setAliyunAccessKey("xxxx"); schedulerxWorker.setAliyunSecretKey("xxxx"); schedulerxWorker.init(); }
说明-
一个应用如果有不止一个业务,或者想把定时任务进行归类,可以建立多个分组。例如应用名是
animals
,新建两个分组animals.dogs
和animals.cats
。此时不用申请两批实例分别接入2个分组,一个应用可以同时接入2个分组,在客户端中将这2个分组配置到groupId=
后面,如groupId=animals.dogs,animals.cats
即可。 -
在初始化SchedulerxWorker客户端时,根据实际业务,如果还有其他配置需求,请参见SchedulerxWorker配置参数说明增加配置。
-
-
- Spring应用
-
在应用程序的
pom.xml
文件中添加SchedulerxWorker依赖。schedulerx2.version
请使用客户端版本说明中最新客户端版本。<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-worker</artifactId> <version>${schedulerx2.version}</version> </dependency>
-
在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 华北3(张家口) addr-cn-zhangjiakou-internal.edas.aliyun.com 华南1(深圳) addr-sz-internal.edas.aliyun.com 美国(弗吉尼亚) addr-us-east-1-internal.acm.aliyun.com 测试(华东1) acm.aliyun.com <bean id="schedulerxWorker" class="com.alibaba.schedulerx.worker.SchedulerxWorker"> <property name="endpoint"> <value>${endpoint}</value> </property> <property name="namespace"> <value>${namespace}</value> </property> //填写之前创建的分组的Group ID。可以配置多个分组,以半角逗号(,)分隔。 <property name="groupId"> <value>${groupId}</value> </property> <property name="aliyunAccessKey"> <value>${aliyunAccessKey}</value> </property> <property name="aliyunSecretKey"> <value>${aliyunSecretKey}</value> </property> </bean>
-
- Spring Boot应用
-
在应用程序的
pom.xml
文件中添加SchedulerxWorker依赖。schedulerx2.version
请使用客户端版本说明中最新客户端版本。<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-spring-boot-starter</artifactId> <version>${schedulerx2.version}</version> </dependency>
-
初始化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 华北3(张家口) addr-cn-zhangjiakou-internal.edas.aliyun.com 华南1(深圳) addr-sz-internal.edas.aliyun.com 美国(弗吉尼亚) addr-us-east-1-internal.acm.aliyun.com 测试(华东1) acm.aliyun.com 在
application.properties
文件中添加之前创建的任务分组的Group ID。spring.schedulerx2.endpoint=${endpoint} spring.schedulerx2.namespace=${namespace} spring.schedulerx2.groupId=${groupId} spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey} spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}
说明 一个应用如果有不止一个业务,或者想把定时任务进行归类,可以建立多个分组。例如应用名是animals
,新建两个分组animals.dogs
和animals.cats
。此时不用申请两批实例分别接入2个分组,一个应用可以同时接入2个分组,在客户端中将这2个分组配置到groupId=
后面,如groupId=animals.dogs,animals.cats
即可。
-
- 独立Java应用
- 新建实现调度任务的类。
在应用中增加类
JobProcessor
,实现任务调度。下面介绍如何实现最简单的定时打印“Hello SchedulerX2.0”:说明 如果您想使用其他调度任务,请参见Java任务。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); } }
执行结果
- 登录EDAS控制台。
- 在左侧导航栏中选择组件中心 > 分布式任务调度(新)。
- 在左侧导航栏选择应用管理。
-
在应用管理页面选择之前创建的分组所在地域和命名空间,然后在之前创建的分组的操作列单击连接机器。
- 如果接入成功,可以看到机器列表。
- 如果接入失败,会弹出暂无可用机器的提示信息。
后续步骤
在您的应用接入调度任务并部署到EDAS后,就可以创建调度任务了。具体操作,请参见创建调度任务。
在文档使用中是否遇到以下问题
更多建议
匿名提交