开发你的第一个SchedulerX任务-阿里云开发者社区

开发者社区> 阿里云分布式应用服务> 正文

开发你的第一个SchedulerX任务

简介: 本文档主要介绍了从创建一个定时任务、定时任务的配置、定时任务处理器的编写到定时任务执行客户端 Bean 配置的完整流程,旨在以最简单明了的方式引导您快速上手 SchedulerX,为进一步使用和熟悉 SchedulerX 的功能提供入门。

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) 在创建任务对话框输入相应信息,单击确定

0

Job 分组:对应 EDAS 中的服务分组,并在右侧选择 Job 所在的域。

在选择 EDAS 服务分组时可使用默认分组或者选择已经存在的分组,也可使用新创建的服务分组。

EDAS 服务分组的创建方法:

在 EDAS 控制台左侧菜单栏选择服务市场>服务分组,单击右上角创建服务组

Job 处理接口:输入接口实现的全类名(完整包路径加类名)。

此处填入您在第 2 步创建的 Job 处理器 ExecuteShellJobProcessor 的全类名(com.schedulerx.test.ExecuteShellJobProcessor)。

定时表达式:可使用工具生成,也可手工修改时间表达式字符串。

  • 工具生成:

1

  • 手工修改时间表达式字符串:

2

此处时间表达式兼容 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 配置的属性值必需和您在控制台的配置信息保持一致,如下图。

4

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 的任务。

开发者旺旺交流群:1644245735

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
官方博客
官网链接