EDAS SchedulerX 快速入门
简介
SchedulerX 是一个分布式定时任务调度系统。用户在应用中依赖 SchedulerX-Client,并在 SchedulerX 控制台创建定时任务,进行相应的参数配置后,启动该应用就可以接收到定时任务的周期调度。SchedulerX-Server 集群为调度触发提供高可用性和高稳定性的保证,并且可以实现对用户客户端机器集群进行分布式调度。
本文档主要介绍了从创建一个定时任务、定时任务的配置、定时任务处理器的编写到定时任务执行客户端 Bean 配置的完整流程,旨在以最简单明了的方式引导您快速上手 SchedulerX,为进一步使用和熟悉 SchedulerX 的功能提供入门。
本文档主要包含以下内容:
- 如何在应用中创建一个定时任务处理器
- 如何创建一个定时任务并配置任务触发时间周期
- 如何运行一个定时任务执行客户端,接收任务定时调度
- 开发者旺旺交流群
创建定时任务示例
下文以建立一个每隔 1 分钟执行一次 Hello World 输出的定时任务为例进行说明。
1. 在工程中添加 SchedulerX -client 依赖
<dependency>
<groupId>com.alibaba.edas</groupId>
<artifactId>schedulerX-client</artifactId>
<version>1.6.5</version>
</dependency>
2. 实现 Job 处理器接口
package com.schedulerx.test;
import java.util.Date;
import com.alibaba.edas.schedulerX.ProcessResult;
import com.alibaba.edas.schedulerX.ScxSimpleJobContext;
import com.alibaba.edas.schedulerX.ScxSimpleJobProcessor;
public class ExecuteShellJobProcessor implements ScxSimpleJobProcessor {
public ProcessResult process(ScxSimpleJobContext context) {
System.out.println("Hello World! "+new Date());
return new ProcessResult(true);//true表示执行成功,false表示失败
}
}
3. 在 EDAS 控制台创建 Job
1) 登陆 EDAS 控制台(https://edas.console.aliyun.com/), 选择左侧菜单栏分布式任务调度,单击右上角新建 Job。
2) 在创建任务对话框输入相应信息,单击确定。
Job 分组:对应 EDAS 中的服务分组,并在右侧选择 Job 所在的域。
在选择 EDAS 服务分组时可使用默认分组或者选择已经存在的分组,也可使用新创建的服务分组。
EDAS 服务分组的创建方法:
在 EDAS 控制台左侧菜单栏选择服务市场>服务分组,单击右上角创建服务组。
Job 处理接口:输入接口实现的全类名(完整包路径加类名)。
此处填入您在第 2 步创建的 Job 处理器 ExecuteShellJobProcessor 的全类名(com.schedulerx.test.ExecuteShellJobProcessor)。
定时表达式:可使用工具生成,也可手工修改时间表达式字符串。
- 工具生成:
- 手工修改时间表达式字符串:
此处时间表达式兼容 Quartz 时间表达式,Quartz 提供七个域(分别对应: 秒>分>小时>日>月>周>年),通常年可以省略。
详细时间表达式说明请参考 EDAS SchedulerX 使用指南-创建 JOB。
4. SchedulerX Client 初始化(两种方式)
- 独立 Java 应用方式
package com.schedulerx.test;
import com.alibaba.edas.schedulerX.SchedulerXClient;
public class schedulerxTestMain {
public static void main(String[] args) {
SchedulerXClient schedulerXClient = new SchedulerXClient();
schedulerXClient.setServiceGroupId("5976ca6f-f699-49d8-94f4-8ca91b4cb566");
schedulerXClient.setServiceGroup("schedulerxTestGroup");
schedulerXClient.setRegionName("cn-hangzhou");
try {
schedulerXClient.init();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
- EDAS 应用管理( war 包部署)方式
在项目工程中增加 spring-web 的依赖。
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.5.RELEASE</version> </dependency>
在 Spring 配置文件中增加 SchedulerXClient bean 的配置。
<bean id="schedulerXClient" class="com.alibaba.edas.schedulerX.SchedulerXClient" init-method="init"> <property name="serviceGroupId"> <value>5976ca6f-f699-49d8-94f4-8ca91b4cb566</value> </property> <property name="serviceGroup"> <value>schedulerxTestGroup</value> </property> <property name="regionName"> <value>cn-hangzhou</value> </property> </bean>
同时,在 web.xml 配置 Spring 监听器。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>scxWarTest</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
注意: 以上两种方式,schedulerXClient 配置的属性值必需和您在控制台的配置信息保持一致,如下图。
1)服务分组 ID,对应 schedulerXClient Bean 中的 serviceGroupId 属性。
2)服务分组名称,对应 schedulerXClient Bean 中的 serviceGroup 属性。
3)区域名称,对应 schedulerXClient Bean 中的 regionName 属性。
5. 应用启动(两种方式)
- 独立 Java 应用方式
首先,在运行应用的机器安装 EDAS Agent。
然后,把应用打好的 jar 包上传至应用服务器。
最后,运行主函数 schedulerxTestMain,同时在程序启动时加上参数 -Dspas.identity=/home/admin/.spas_key/default
- EDAS 应用管理( war 包部署)方式
首先,将应用打好 war 包。
然后,在 EDAS 控制台应用管理中创建应用,上传 war 包。
最后,在应用管理中启动应用。
启动应用后,系统将会根据您的设定(每隔1分钟)调用实现 Job 处理器接口的类代码(ExecuteShellJobProcessor),完成打印输出 Hello World 的任务。