全部产品

快速入门

更新时间:2020-09-07 14:21:26

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

操作步骤如下:

  1. 本地应用开发
  2. 云端发布应用
  3. 控制台配置任务
  4. 查看任务调度记录

示例工程

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

步骤一:本地应用开发

  1. 创建 SOFABoot 工程:下载并配置好一个 SOFABoot 工程原型。配置步骤,参见 SOFABoot 快速开始
    说明:任务调度客户端支持使用 SOFABoot 框架或其它 Maven 工程框架开发。此处以 SOFABoot 为例介绍应用开发示例。非 SOFABoot 工程的配置,参见 前置条件 > 非 SOFABoot 工程
  2. 引入任务调度的依赖
    1. 在 SOFABoot 工程中引入任务调度的依赖:
      1. <dependency>
      2. <groupId>com.alipay.sofa</groupId>
      3. <artifactId>scheduler-enterprise-sofa-boot-starter</artifactId>
      4. </dependency>
    2. 对于 SOFABoot 3.4.3 以下的版本,需要添加如下 Tracer 依赖。
      说明
      • 添加前,请仔细检查工程是否已经依赖了 Tracer,避免 Jar 包冲突问题。
      • SOFABoot 将在 3.4.3 及其以上版本自动依赖 Tracer,无需再手动添加。SOFABoot 最新版本信息,详见 SOFABoot 版本说明
      1. <dependency>
      2. <groupId>com.alipay.sofa</groupId>
      3. <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
      4. </dependency>
  3. 修改全局配置项:在 application.properties 文件,完成中间件全局配置。详见 引入 SOFA 中间件 > properties 配置项
  4. 实现处理器接口:客户端提供了 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 这个类的源码。
  5. 实现类:类里必须分别实现 handlegetThreadPoolgetName 方法。

    • 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. }
  6. Spring 配置:通过以下任一方式将接口实现类配置为 Spring Bean。
    • src/main/resources/META-INF/xxx/xxx-xxx.xml 文件中进行配置。示例如下:
      1. <bean id="sampleService" class="com.antcloud.demo.antscheduler.service.SampleServiceImpl"/>
    • 使用注解驱动(annotation-driven)的方式声明 Bean。

步骤二:云端发布应用

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

步骤三:控制台配置任务

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

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

启用

步骤四:查看任务调度记录

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

全部调度记录

相关链接