您可以为您的Spring Boot应用快速接入SchedulerX,实现分布式任务调度能力。
前提条件
Spring Boot应用客户端接入SchedulerX
- 在应用程序的
pom.xml
文件中添加SchedulerxWorker依赖。请参见客户端版本说明,
schedulerx2.version
使用最新客户端版本。<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-spring-boot-starter</artifactId> <version>${schedulerx2.version}</version> </dependency>
- 在
application.properties
文件中设置相关参数,初始化SchedulerxWorker。- 初始化SchedulerxWorker时,会用到您部署应用的地域(Region)和对应的Endpoint。详情请参见Endpoint列表。
- namespace为命名空间ID,可以在控制台命名空间页面获取。
- groupId为应用ID,appKey为应用key,可以在控制台应用管理页面获取。
- aliyunAccessKey和aliyunSecretKey为阿里云账号的AccessKeyID和AccessKeySecret,可以在用户信息管理控制台的安全信息管理页面获取。
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.schedulerx2.aliyunAccessKey=${aliyunAccessKey} #spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}
说明 一个应用如果包含多个业务,或者想把定时任务进行归类,可以建立多个分组,例如应用animals
新建了两个分组animals.dogs
和animals.cats
。此时不用申请两批实例分别接入这两个分组,在应用客户端中将这两个分组配置到groupId=
后面即可,例如groupId=animals.dogs,animals.cats
。如果还有其它需求,请参考下表中的参数进行配置。
key 描述 设置值 起始版本 spring.schedulerx2.enabled 是否启用SchedulerX 2.0的starter,默认开启不需要设置。 true/false,默认true。 0.1.7 spring.schedulerx2.endpoint 设置Region所在的Endpoint,详情请参见Endpoint列表。 无 0.1.7 spring.schedulerx2.namespace 设置命名空间的UID,可以在控制台命名空间页面获取。 无 0.1.7 spring.schedulerx2.groupId 应用ID,可以在控制台应用管理页面获取。 无 0.1.7 spring.schedulerx2.appKey 应用key,可以在控制台应用管理页面获取。 无 1.2.1 spring.schedulerx2.host 如果有多个IP(例如VPN或者多网卡),可以设置真实的IP。 无 0.1.7 spring.schedulerx2.blockAppStart SchedulerX初始化失败是否block应用启动,默认为True。 true/false,默认true。 1.1.0 spring.schedulerx2.shareContainerPool 客户端所有任务执行是否共享线程池,默认为False。 无 1.2.1.2 spring.schedulerx2.sharePoolSize 如果开启共享线程池,可以自定义线程池大小,默认为64。 无 1.2.1.2 spring.schedulerx2.label 不同客户端可以设置标签,任务管理可以指定标签执行。应用于灰度、压测等场景。 无 1.2.2.2 spring.schedulerx2.enableCgroupMetrics 是否使用cgroup统计客户端实例的指标。容器(k8s)环境需要自己手动开启。 true/false,默认false。 1.2.2.2 spring.schedulerx2.cgroupPathPrefix 容器内cgroup的路径。 默认是/sys/fs/cgroup/cpu/,如果存在该路径则不需要设置。 1.2.2.2 spring.schedulerx2.enableHeartbeatLog 是否打印心跳日志,${user.home}/logs/schedulerx/heartbeat.log true/false,默认true 1.2.4 - 在应用中创建类
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,显示接入的实例个数,则说明应用接入成功。在操作列单击查看实例,即可在连接实例对话框中查看实例列表。
在文档使用中是否遇到以下问题
更多建议
匿名提交