准备工作
本文介绍应用开发前的准备工作。
搭建工程
在开始使用任务调度产品之前,您需要根据实际需求,搭建以下类型的工程:
SOFABoot 工程
下载并配置好一个 SOFABoot 工程原型。
具体步骤参见 创建 Web 工程。
对于 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>
在 SOFABoot 工程的
pom.xml
文件中引入任务调度产品的依赖:<dependency> <groupId>com.alipay.sofa</groupId> <artifactId>scheduler-enterprise-sofa-boot-starter</artifactId> </dependency>
修改 SOFABoot 全局配置项。
环境参数配置详情,请参见 properties 配置项。
非 SOFABoot 工程
配置工程的 Maven
settings.xml
文件。在本地 Maven 路径下的
settings.xml
文件中,配置mvn.cloud.alipay.com
仓库的地址及用户名密码。配置后工程即可通过 Maven 获取该仓库中任务调度的 JAR 依赖包,不配置则无法获取到 JAR 包。说明mvn.cloud.alipay.com
仓库的地址及用户名密码请 提交工单获取。在工程的主
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>
获取环境配置参数。
环境参数配置详情,请参见 properties 配置项。
初始化客户端 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); } }
下载示例代码
为快速进行任务调度项目的本地工程开发,您需要下载任务调度 示例工程。