全部产品

快速入门

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

操作步骤如下:

  1. 本地应用开发

  2. 云端发布应用

  3. 控制台配置任务

  4. 查看任务调度记录

示例工程

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

步骤一:本地应用开发

  1. 创建 SOFABoot 工程:下载并配置好一个 SOFABoot 工程原型。配置步骤,参见 SOFABoot 快速开始

    说明:任务调度客户端支持使用 SOFABoot 框架或其它 Maven 工程框架开发。此处以 SOFABoot 为例介绍应用开发示例。非 SOFABoot 工程的配置,参见 前置条件 > 非 SOFABoot 工程
  2. 引入任务调度的依赖

    1. 在 SOFABoot 工程中引入任务调度的依赖:

      <dependency>
           <groupId>com.alipay.sofa</groupId>
           <artifactId>scheduler-enterprise-sofa-boot-starter</artifactId>
      </dependency>
    2. 对于 SOFABoot 3.4.3 以下的版本,需要添加如下 Tracer 依赖。

      说明

      • 添加前,请仔细检查工程是否已经依赖了 Tracer,避免 Jar 包冲突问题。

      • SOFABoot 将在 3.4.3 及其以上版本自动依赖 Tracer,无需再手动添加。SOFABoot 最新版本信息,详见 SOFABoot 版本说明

      <dependency>
           <groupId>com.alipay.sofa</groupId>
           <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
      </dependency>
  3. 修改全局配置项:在 application.properties 文件,完成中间件全局配置。详见 引入 SOFA 中间件 > properties 配置项

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

    /**
     * 简单任务处理器接口
     */
    public interface ISimpleJobHandler extends IJobHandler{
    
        /**
         * 处理request
         *
         * @param context
         * @return
         */
        ClientCommonResult handle(JobExecuteContext context);
    }

    代码说明:

    • JobExecuteContext 是触发任务的请求上下文,可以从里面获取到任务的一些信息,比如在控制台创建任务时设置的自定义参数,可以通过 getCustomParam(String key) 方法获取。

    • 如果设置了任务分片,可以通过方法 getSharding() 来获取当前机器分配到的分片号。详细信息可以查看 com.alipay.antschedulerclient.model.JobExecuteContext 这个类的源码。

  5. 实现类:类里必须分别实现 handlegetThreadPoolgetName 方法。

    • handle:在该方法里执行业务逻辑。

    • getThreadPool:获取一个执行该任务的线程池,如果没有设置,会使用客户端自带的线程池。

    • getName:获取这个执行器的名字,这个名字很重要,客户端接收到任务的触发请求时,会根据名字寻找匹配的执行器。

      说明

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

      代码示例如下:

      public class AlwaysSuccessHandler implements ISimpleJobHandler{
          private static final String NAME ="ALWAYS_SUCCESS_JOB";
          private static final ThreadPoolExecutor executor =new ThreadPoolExecutor(20,
                  300,1,TimeUnit.HOURS,new ArrayBlockingQueue<Runnable>(100){})
      
          /**
           * 处理业务逻辑
           **/
          @Override
          public ClientCommonResult handle(JobExecuteContext context) throws InterruptedException{
              // 获取自定义参数
              Integer num =(Integer) context.getCustomParam("num");
              if(num ==null){
                  num =0;
              }
              num = num +1;
              // 更新自定义参数
              context.putCustomParams("num",5);
              return ClientCommonResult.buildSuccessResult();
          }
      
          @Override
          public ThreadPoolExecutor getThreadPool(){
              // 建议使用自定义实现类
              return executor;
          }
      
          @Override
          public String getName(){
              // handler 名字,管控页面配置的handler 即这部分定义内容
              return NAME;
          }
      }
      
  6. Spring 配置:通过以下任一方式将接口实现类配置为 Spring Bean。

    • src/main/resources/META-INF/xxx/xxx-xxx.xml 文件中进行配置。示例如下:

      <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 表达式详解

    • 任务分组:选填,可选择或新建一个任务分组,方便归纳管理任务。

    • 优先级:选填,标记任务的重要性等级,对任务的执行无实质影响。

    • 执行器名字:必填,必须与代码中任务处理器名字一致,即上文提及的 步骤一:本地应用开发>5.实现类getName 方法获取的执行器名字。

    • 是否分片:选填,默认为否,开启后需要设置分片数量。

    • 自定义参数:选填,支持多种类型的参数配置,详见 使用自定义参数

    • 路由策略:必填,可选项:随机(默认)、定向、轮询。

    • 通信方式:必填,支持单向 ONEWAY 及回调 CALLBACK。

      • 单向 ONEWAY:单向操作,无返回值。

      • 回调 CALLBACK:双向操作,有返回值。选择 CALLBACK 类型,即需要配置任务互斥、漏触发策略、超时策略、超时时间及失败处理策略。详见 任务参数说明

    • 描述:选填项,任务的详细描述,例如业务含义、影响范围等,最多 1024 个字符。

  4. 任务信息配置完成后,单击 提交,即可在任务列表中看到该任务。

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

启用

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

  1. 任务配置 页面的列表中,单击任务名称进入 任务详情 页面。

  2. 调度记录 页签中查看调度记录。调度记录最多保留 7 天。您可以使用页签上方的下拉列表筛选调度记录类型,包括全部调度记录、调度执行成功、调度执行失败以及漏调度记录。

全部调度记录

相关链接