开发你的第一个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

相关实践学习
使用DAS实现数据库自动SQL优化
本场景介绍如何使用DAS实现数据库自动SQL优化。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas&nbsp;
目录
相关文章
|
2月前
|
监控 Java 调度
Spring中的任务调度:探索@Scheduled和@Schedules注解的威力
Spring中的任务调度:探索@Scheduled和@Schedules注解的威力
35 0
|
3月前
|
资源调度 Java
在SchedulerX中,你可以使用`schedulerx.submitTask(taskName)`方法来提交并执行单个任务
【1月更文挑战第7天】【1月更文挑战第34篇】在SchedulerX中,你可以使用`schedulerx.submitTask(taskName)`方法来提交并执行单个任务
20 1
|
7天前
|
Java 调度 数据库管理
APScheduler自定义配置
APScheduler自定义配置
11 0
|
7天前
|
调度
APScheduler任务相关操作
APScheduler任务相关操作
18 0
|
3月前
|
资源调度
在SchedulerX中,你可以使用`schedulerx.output()`函数来向Worker报告运行结果
【1月更文挑战第7天】【1月更文挑战第35篇】在SchedulerX中,你可以使用`schedulerx.output()`函数来向Worker报告运行结果
20 1
|
4月前
|
存储 JavaScript 前端开发
RxJS中的调度器(Scheduler)机制
RxJS中的调度器(Scheduler)机制
44 0
|
4月前
|
Kubernetes 算法 调度
基于kube-scheduler-simulator编写自己的调度程序
基于kube-scheduler-simulator编写自己的调度程序
49 0
|
存储 NoSQL 关系型数据库