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

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

开发者旺旺交流群:1644245735

时间: 2024-11-02 04:08:28

开发你的第一个SchedulerX任务的相关文章

SharePoint开发详解:一个Feature中使用SPGridView的几个Tips

根据上面一篇随笔所介绍的PC购买流程的项目,在项目中,需要有一个生成 订单的功能,能够使得Admin很方便的在获得批准的申请中选取一些来生成订单 ,要求界面操作简单明了,大概的效果图如下: 开发详解:一个Feature中使用SPGridView的几个Tips-"> 点击checkbox,自动计算当前订单的总价值,点击按钮,生成订单. 有此想到了用SPGridView这个现成的控件来完成,以前也用过这个控件,其 实和GridView没什么大区别.这里就简单介绍一下了: 首先Create 一个

全显示成正数-安卓开发中如何使一个byte类型的数组内的数据不显示成负数

问题描述 安卓开发中如何使一个byte类型的数组内的数据不显示成负数 在做Android开发的时候一个byte类型的数组result,里面有比较大的正数,需要做什么样的处理才能使他显示的全是正数:求大神指导,给个代码 byte[] result for (int i = 0; i < result.length; i++) Log.e("读出全部page", "byte " + i + " is " + result[i]); 解决方案 f

java-用eclipse安卓开发时遇到的一个十分诡异的问题

问题描述 用eclipse安卓开发时遇到的一个十分诡异的问题 @Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String filePath = ""/storage/sdcard0/DCIM/Camera/20130826_182939.jpg"&q

c语言 单片机-keil4开发中遇到的一个很奇怪的问题。

问题描述 keil4开发中遇到的一个很奇怪的问题. void main(){ // uchar test_i; const uchar timp_button=0xfF; //this value is that the button havn't sticked uchar n_delay; //delay unsigned char j=0; unsigned char i; intend_initiation(); //调用时间设定程序 while(1){ if((hour==alarm_

uiwebview-iOS开发UIWebView怎么开启一个新的标签页

问题描述 iOS开发UIWebView怎么开启一个新的标签页 类似点击a标签 target="_blank"就会开启一个新的标签页,UIWebView的显示过程及原理,有没有人知道 解决方案 http://ask.csdn.net/questions/199467

用 Swift 开发我的第一个 iOS 应用前,我想要知道这些内容

本文讲的是用 Swift 开发我的第一个 iOS 应用前,我想要知道这些内容, 上周,我和我哥哥使用 Swift 语言开发了第一款iOS 应用.通过这篇文章,我想分享在此过程中所收获的心得体会. 我是一位有六年网站应用开发经验,并且掌握 Ruby 和 JavaScript 的工程师,而最近3个月致力于学习 Swift 编程语言. Objective-C 已亡? Swift 是一款由苹果公司(世界最大的公司之一)创立的编程语言.这也表明了许多事:首先,苹果并不避讳向自己的平台中引入重大的更新.你需

java web开发怎么能够有一个按钮调网页内容字体大小呢

问题描述 java web开发怎么能够有一个按钮调网页内容字体大小呢 java web开发怎么能够有一个按钮调网页内容字体大小呢. 有些网站会有,大,中,小. 几个按钮,能够调动字体大小. 要怎样实现这样的功能呢? 解决方案 几种样式,动态改变样式即可 css样式 解决方案二: 一个按键,或者几个按键调整字体大小,肯定是没有问题的. 调整字体大小, Java 本身有类库支持,或者使用类似于:$Global.subContentByLen(${item.message}, 110) 来设置. 解决

unicode编码-在三星S4行开发Android应用遇到一个Unicode编码的问题,请高手赐教,非常感谢

问题描述 在三星S4行开发Android应用遇到一个Unicode编码的问题,请高手赐教,非常感谢 从服务器端获取unicode字节数组,打印出来为003300300030003300300031,从打印来看应该小端UTF-16格式,对应字符串300301,但是用String(byteArrayUTF-16LE"")还是encodingUtls.getString(byteArrayUTF-16LE"")都是乱码,请问这个问题怎么解决,谢谢~~

活动 网站 流程-请问开发网站流程和一个活动流程是怎样 的

问题描述 请问开发网站流程和一个活动流程是怎样 的 我想请问一下各位打什么开发流程都是怎样的?比如说要做一个活动,首先我们运营需要策划--- 策划完成--开会策划的活动是否OK--OK则进行开发,不OK则选择修改直至OK为止. 技术开发----技术讨论---设计师设计页面---设计完成---前端设计--最后后台架构--完成 活动---测试活动---最后发布活动等等..想请问一下各位的活动流程是怎样的?或者说架构网站的流程是怎样的?希望大家一起分享一下..谢谢... 解决方案 其实关键看你的预算了