当SchedulerX在公网地域时,只要可以访问公网的机器或容器(例如,非阿里云的机器或本地开发环境),都可以接入SchedulerX。本文介绍如何在本地接入SchedulerX进行测试和开发。
操作步骤
- 在应用pom.xml文件中添加SchedulerxWorker依赖。
针对不同应用,在初始化SchedulerxWorker时会有所不同。
- 普通Java或Spring应用
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-worker</artifactId>
<version>${schedulerx2.version}</version>
<!--如果用的是logback,需要把log4j和log4j2排除掉 -->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
- Spring Boot应用
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>${schedulerx2.version}</version>
<!--如果用的是logback,需要把log4j和log4j2排除掉 -->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
- 初始化SchedulerxWorker。
针对不同应用,在初始化SchedulerxWorker的时候会有所不同。
- 普通Java应用
在main函数中初始化SchedulerxWorker。
初始化SchedulerxWorker时,会用到您部署应用的公网地域(Region)和对应的Endpoint(acm.aliyun.com)。
- 登录分布式任务调度平台。
- 在控制台顶部菜单栏,将地域切换为公网。
- 在左侧导航栏单击命名空间,在命名空间页面查看命名空间ID(Namespace)。

- 在左侧导航栏单击应用管理,在应用管理页面查看应用ID(groupId)和应用key(appKey)。

- 将光标移动到控制台右上角的用户头像上,在弹出的列表中单击AccessKey管理,在AccessKey管理页面获取AccessKeyID(AliyunAccessKey)和AccessKeySecret(AliyunSecretKey)。
public void initSchedulerxWorker() throws Exception {
SchedulerxWorker schedulerxWorker = new SchedulerxWorker();
schedulerxWorker.setEndpoint("xxxx");
schedulerxWorker.setNamespace("xxxx");
schedulerxWorker.setGroupId("xxxx");
//1.2.1及以上版本需要设置应用key
schedulerxWorker.setAppKey("xxxx");
//1.2.1以下版本需要设置AK/SK
//schedulerxWorker.setAliyunAccessKey("xxxx");
//schedulerxWorker.setAliyunSecretKey("xxxx");
schedulerxWorker.init();
}
说明
- 一个应用如果包含多个业务,或者想把定时任务进行归类,可以建立多个分组,例如应用
animals
新建了两个分组animals.dogs
和 animals.cats
。此时不用申请两批实例分别接入这两个分组,在应用客户端中把这两个分组配置到groupId=
后面即可,例如groupId=animals.dogs,animals.cats
。
- 在初始化SchedulerxWorker客户端时,如果还有其他配置需求,可以添加配置。更多信息,请参见SchedulerxWorker配置参数说明添加配置。
- Spring应用
在xml配置文件中注入SchedulerxWorker Bean。
- 登录分布式任务调度平台。
- 在控制台顶部菜单栏,将地域切换为公网。
- 在左侧导航栏单击命名空间,在命名空间页面查看命名空间ID(Namespace)。

- 在左侧导航栏单击应用管理,在应用管理页面查看应用ID(groupId)和应用key(appKey)。

- 将光标移动到控制台右上角的用户头像上,在弹出的列表中单击AccessKey管理,在AccessKey管理页面获取AccessKeyID(AliyunAccessKey)和AccessKeySecret(AliyunSecretKey)。
<bean id="schedulerxWorker" class="com.alibaba.schedulerx.worker.SchedulerxWorker">
<property name="endpoint">
<value>${endpoint}</value>
</property>
<property name="namespace">
<value>${namespace}</value>
</property>
<property name="groupId">
<value>${groupId}</value>
</property>
<!--1.2.1及以上版本设置appKey -->
<property name="appKey">
<value>${appKey}</value>
</property>
<!--1.2.1以下版本需要设置AK/SK -->
<!--
<property name="aliyunAccessKey">
<value>${aliyunAccessKey}</value>
</property>
<property name="aliyunSecretKey">
<value>${aliyunSecretKey}</value>
</property>
-->
</bean>
- Spring Boot应用
在application.properties文件中添加如下配置:
- 登录分布式任务调度平台。
- 在控制台顶部菜单栏,将地域切换为公网。
- 在左侧导航栏单击命名空间,在命名空间页面查看命名空间ID(Namespace)。

- 在左侧导航栏单击应用管理,在应用管理页面查看应用ID(groupId)和应用key(appKey)。

- 将光标移动到控制台右上角的用户头像上,在弹出的列表中单击AccessKey管理,在AccessKey管理页面获取AccessKeyID(AliyunAccessKey)和AccessKeySecret(AliyunSecretKey)。
spring.schedulerx2.endpoint=${endpoint}
spring.schedulerx2.namespace=${namespace}
spring.schedulerx2.groupId=${groupId}
# 1.2.1及以上版本设置appKey
spring.schedulerx2.appKey=${appKey}
# 1.2.1以下版本设置AK/SK,开启其他特殊配置(如:配置文件定义任务同步、Spring任务自动同步)也需要额外配置以下参数。
#spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey}
#spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}
说明 一个应用如果包含多个业务,或者想把定时任务进行归类,可以建立多个分组,例如应用animals
新建了两个分组animals.dogs
和animals.cats
。此时不用申请两批实例分别接入这两个分组,在应用客户端中将这两个分组配置到groupId=
后面即可,例如groupId=animals.dogs,animals.cats
。
- 在应用中创建类
JobProcessor
,实现任务调度。
本文仅介绍如何实现一个最简单的定时打印“Hello SchedulerX2.0”的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);
}
}
- 运行本地应用。
结果验证
- 客户端接入完成,将该应用发布到阿里云。
- 登录分布式任务调度平台。
- 在顶部菜单栏选择地域。
- 在左侧导航栏单击应用管理。
- 在应用管理页面查看实例总数。
- 如果实例总数为0,则说明应用接入失败。请检查、修改本地应用。
- 如果实例总数不为0,显示接入的实例个数,则说明应用接入成功。在操作列单击查看实例,即可在连接实例对话框中查看实例列表。