準(zhǔn)備工作
本文介紹應(yīng)用開發(fā)前的準(zhǔn)備工作。
搭建工程
在開始使用任務(wù)調(diào)度產(chǎn)品之前,您需要根據(jù)實(shí)際需求,搭建以下類型的工程:
SOFABoot 工程
下載并配置好一個(gè) SOFABoot 工程原型。
具體步驟參見 快速入門。
對于 SOFABoot 3.4.3 以下的版本,需要添加如下 Tracer 依賴。
說明添加前,請仔細(xì)檢查工程是否已經(jīng)依賴了 Tracer,避免 JAR 包沖突問題。
SOFABoot 已在 3.4.3 及其以上版本自動(dòng)依賴 Tracer,無需再手動(dòng)添加。SOFABoot 最新版本信息,詳見 版本說明。
<dependency> <groupId>com.alipay.sofa</groupId> <artifactId>tracer-enterprise-sofa-boot-starter</artifactId> </dependency>
在 SOFABoot 工程的
pom.xml
文件中引入任務(wù)調(diào)度產(chǎn)品的依賴:<dependency> <groupId>com.alipay.sofa</groupId> <artifactId>scheduler-enterprise-sofa-boot-starter</artifactId> </dependency>
修改 SOFABoot 全局配置項(xiàng)。
環(huán)境參數(shù)配置詳情,請參見 引入 SOFA 中間件。
非 SOFABoot 工程
配置工程的 Maven
settings.xml
文件。在本地 Maven 路徑下的
settings.xml
文件中,配置mvn.cloud.alipay.com
倉庫的地址及用戶名密碼。配置后工程即可通過 Maven 獲取該倉庫中任務(wù)調(diào)度的 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.2.0</version> </dependency> <dependency> <groupId>com.antcloud.antvip</groupId> <artifactId>antcloud-antvip-common</artifactId> <version>1.2.0</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>
獲取環(huán)境配置參數(shù)。
環(huán)境參數(shù)配置詳情,請參見 引入 SOFA 中間件。
初始化客戶端 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),如果為空則認(rèn)為不分zone(cell) zone = System.getProperty("com.alipay.ldc.zone"); // 阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,風(fēng)險(xiǎn)很高。強(qiáng)烈建議您創(chuàng)建并使用RAM用戶進(jìn)行API訪問或日常運(yùn)維,請登錄RAM控制臺(tái)創(chuàng)建RAM用戶。 // 此處以把AccessKey和AccessKeySecret保存在環(huán)境變量為例說明。 // 強(qiáng)烈建議不要把AccessKey和AccessKeySecret保存到代碼里,會(huì)存在密鑰泄漏風(fēng)險(xiǎn) 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); } }
下載示例代碼
為快速進(jìn)行任務(wù)調(diào)度項(xiàng)目的本地工程開發(fā),您需要下載任務(wù)調(diào)度 示例工程。