全部产品
云市场

快速入门

更新时间:2020-07-03 17:25:48

任务调度产品支持多种任务类型,包括简单任务、集群任务。您可以根据业务的需求,选择其一实现业务,详见 任务类型。本文将以简单任务为例,介绍如何快速完成一个简单任务的本地开发以及控制台任务配置等。

操作步骤如下:

  1. 前置条件
  2. 实现处理器接口
  3. 实现类
  4. 发布应用
  5. 控制台配置任务
  6. 查看调度记录

如需任务调度工程示例代码,可点击此处下载 示例工程

前置条件

任务调度产品客户端支持使用 SOFABoot 框架或其它 Maven 工程框架开发。SOFABoot 是基于 Spring Boot 的开发框架,用于快速、敏捷地开发 Spring 应用程序,特别适合构建微服务系统。此处以 SOFABoot 为例介绍应用开发示例。有关非 SOFABoot 工程的配置,参见 应用开发 > 前置条件 > 非 SOFABoot 工程

在开始 SOFABoot 应用开发前,请确认您已完成以下准备工作:

  1. 下载并配置好一个 SOFABoot 工程原型。SOFABoot 版本要求 3.0.2 及以上。
  2. 在 SOFABoot 工程中引入任务调度产品的依赖:
    1. <dependency>
    2. <groupId>com.alipay.sofa</groupId>
    3. <artifactId>scheduler-enterprise-sofa-boot-starter</artifactId>
    4. </dependency>
  3. 修改 SOFABoot 全局配置项,详见 引入 SOFA 中间件 > properties 配置项

实现处理器接口

简单任务接口

客户端提供了 ISimpleJobHandler 接口给业务方实现,通过实现该接口编写业务逻辑代码。

  1. /**
  2. * 简单任务处理器接口
  3. */
  4. public interface ISimpleJobHandler extends IJobHandler {
  5. /**
  6. * 处理request
  7. *
  8. * @param context
  9. * @return
  10. */
  11. ClientCommonResult handle(JobExecuteContext context);
  12. }

代码说明:

  • JobExecuteContext 是触发任务的请求上下文,可以从里面获取到任务的一些信息,比如在控制台创建任务时设置的自定义参数,可以通过 getCustomParam(String key) 方法获取。
  • 如果设置了任务分片,可以通过方法 getSharding() 来获取当前机器分配到的分片号。详细信息可以查看 com.alipay.antschedulerclient.model.JobExecuteContext 这个类的源码。

实现类

类里必须实现以下三个方法:

  • handle:在该方法里执行业务逻辑。
  • getThreadPool:获取一个执行该任务的线程池,如果没有设置,会使用 客户端自带的线程池。
  • getName:获取这个执行器的名字,这个名字很重要,客户端接收到任务的触发请求时,会根据名字寻找匹配的执行器。

说明:当任务需要按多个步骤执行时,需要写多个实现类,并在控制台开启分步。

代码示例

  1. public class AlwaysSuccessHandler implements ISimpleJobHandler {
  2. private static final String NAME = "ALWAYS_SUCCESS_JOB";
  3. private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(20,
  4. 300, 1, TimeUnit.HOURS, new ArrayBlockingQueue<Runnable>(100) {})
  5. /**
  6. * 处理业务逻辑
  7. **/
  8. @Override
  9. public ClientCommonResult handle(JobExecuteContext context) throws InterruptedException {
  10. // 获取自定义参数
  11. Integer num = (Integer) context.getCustomParam("num");
  12. if (num == null) {
  13. num = 0;
  14. }
  15. num = num + 1;
  16. // 更新自定义参数
  17. context.putCustomParams("num", 5);
  18. return ClientCommonResult.buildSuccessResult();
  19. }
  20. @Override
  21. public ThreadPoolExecutor getThreadPool() {
  22. // 建议使用自定义实现类
  23. return executor;
  24. }
  25. @Override
  26. public String getName() {
  27. // handler 名字,管控页面配置的handler 即这部分定义内容
  28. return NAME;
  29. }
  30. }

发布应用

本地客户端开发完成后,您需要将其发布部署到 SOFAStack 经典应用服务。详细步骤,请参见 发布部署应用

控制台配置

  1. 进入 任务调度控制台 页面,左侧导航栏选择 任务配置
  2. 任务配置 页面,点击 添加任务 > 简单任务
  3. 在添加简单任务的配置页面,完成任务基本信息的配置:
    • 任务名称:必填,用于识别任务,支持英文、中文、数字、下划线。
    • 应用名称:必填,必须与工程中 application.properties 文件的 spring.application.name 配置的应用名称一致。
    • 调度类型:必填,支持 CRON 表达式触发 及 事件触发。有关 CRON 表达式的更多信息,参见 CRON 表达式详解
    • 任务分组:选填,可选择或新建一个任务分组,方便归纳管理任务。
    • 优先级:选填,标记任务的重要性等级,对任务的执行无实质影响。
    • 执行器名字:必填,必须与代码中任务处理器名字一致,即上文提及的 实现类getName 方法获取的执行器名字。
    • 是否分片:选填,默认为否,开启后需要设置分片数量。
    • 自定义参数:选填,支持多种类型的参数配置,详见 使用自定义参数
    • 路由策略:必填,可选项:随机(默认)、定向、轮询。
    • 通信方式:必填,支持 单向 ONEWAY 及 回调 CALLBACK。
      • 单向 ONEWAY:单向操作,无返回值。
      • 回调 CALLBACK:双向操作,有返回值。选择 CALLBACK 类型,即需要配置 任务互斥、漏触发策略、超时策略、超时时间及失败处理策略。详见 任务参数说明
    • 描述:选填项,任务的详细描述,例如业务含义、影响范围等,最多 1024 个字符。
  4. 任务信息配置完成后,点击 提交,即可在任务列表中看到该任务。

如果有客户端在线,新配置的任务自动有客户端注册。任务配置好后默认是禁用的,需要手动启用,启用后任务才可以按设置进行调度。在禁用的状态下也可以在操作列点击 触发,手动触发一次任务。

启用

查看调度记录

  1. 任务配置 页面的列表中,点击任务名称进入 任务详情 页面。
  2. 调度记录 页签中查看调度记录。调度记录最多保留 7 天。您可以使用页签上方的下拉列表筛选调度记录类型,包括全部调度记录、调度执行成功、调度执行失败以及漏调度记录。

全部调度记录

相关链接