准备工作

本文介绍应用开发前的准备工作。

搭建工程

在开始使用任务调度产品之前,您需要根据实际需求,搭建以下类型的工程:

SOFABoot 工程

  1. 下载并配置好一个 SOFABoot 工程原型。

    具体步骤参见 创建 Web 工程

  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. 在 SOFABoot 工程的 pom.xml文件中引入任务调度产品的依赖:

    <dependency>
          <groupId>com.alipay.sofa</groupId>
          <artifactId>scheduler-enterprise-sofa-boot-starter</artifactId>
    </dependency>
  4. 修改 SOFABoot 全局配置项。

    环境参数配置详情,请参见 properties 配置项

非 SOFABoot 工程

  1. 配置工程的 Maven settings.xml文件。

    在本地 Maven 路径下的 settings.xml文件中,配置 mvn.cloud.alipay.com仓库的地址及用户名密码。配置后工程即可通过 Maven 获取该仓库中任务调度的 JAR 依赖包,不配置则无法获取到 JAR 包。

    说明

    mvn.cloud.alipay.com仓库的地址及用户名密码请 提交工单获取。

  2. 在工程的主 pom.xml文件中引入 antschedulerclient的依赖。

    以 1.0.7 版本为例:

    <dependency>
        <groupId>com.alipay.antschedulerclient</groupId>
        <artifactId>antschedulerclient-core</artifactId>
        <version>1.0.7</version>
    </dependency>
    <dependency>
        <groupId>com.alipay.antschedulerclient</groupId>
        <artifactId>antschedulerclient-antvip</artifactId>
        <version>1.0.7</version>
    </dependency>
    
    <!-- 间接依赖 -->
    <dependency>
        <groupId>com.antcloud.antvip</groupId>
        <artifactId>antcloud-antvip-client</artifactId>
        <version>1.0.4</version>
    </dependency>
    <dependency>
        <groupId>com.antcloud.antvip</groupId>
        <artifactId>antcloud-antvip-common</artifactId>
        <version>1.0.4</version>
    </dependency>
    <!-- antvip-common的依赖 -->
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.83</version>
    </dependency>
    
    <dependency>
        <groupId>com.alipay.sofa.cloud</groupId>
        <artifactId>sdk-core</artifactId>
        <version>0.1</version>
    </dependency>
    <dependency>
        <groupId>com.alipay.sofa.common</groupId>
        <artifactId>sofa-common-tools</artifactId>
        <version>1.0.12</version>
    </dependency>
    
    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>bolt</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.toolkit.common</groupId>
        <artifactId>toolkit-common-lang</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>hessian</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.alipay.sofa.lookout</groupId>
        <artifactId>lookout-api</artifactId>
        <version>1.4.3</version>
    </dependency>
    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>tracer-core</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>tracer-extensions</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.alipay.common</groupId>
        <artifactId>tracer</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>20.0</version>
    </dependency>
  3. 获取环境配置参数。

    环境参数配置详情,请参见 properties 配置项

  4. 初始化客户端 Client。

    示例如下:

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        try {
            ApplicationContext applicationContext = event.getApplicationContext();
            Map<String, IJobHandler> handlerBeans = applicationContext
                    .getBeansOfType(IJobHandler.class);
            for (IJobHandler handler : handlerBeans.values()) {
                handlerList.add(handler);
            }
    // zone(cell),如果为空则认为不分zone(cell)
            zone = System.getProperty("com.alipay.ldc.zone");
    
            // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
            // 此处以把AccessKey和AccessKeySecret保存在环境变量为例说明。
            // 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险
            Config config = new Config(app, zone, instanceId, accessKey, securityKey);
            AntVipRouterConfig routerConfig = new AntVipRouterConfig();
            routerConfig.setEndPoint(antvipEndpoint);
            AntVipRouter router = new AntVipRouter(routerConfig);
            antSchedulerClient = new AntSchedulerClient(config, router, handlerList);
            antSchedulerClient.init();
        } catch (Throwable t) {
            LOGGER.error("init antschedulerclient error", t);
            throw new RuntimeException(t);
        }
    }

下载示例代码

为快速进行任务调度项目的本地工程开发,您需要下载任务调度 示例工程