From c26da5643aab6ef35bbba4787237a88fe98968bf Mon Sep 17 00:00:00 2001 From: flystar32 Date: Tue, 11 Dec 2018 20:02:43 +0800 Subject: [PATCH 01/24] Add spring-cloud-alibaba-nacos-config-server module, close #34 --- spring-cloud-alibaba-dependencies/pom.xml | 13 +++++++++++- spring-cloud-starter-alibaba/pom.xml | 1 + .../pom.xml | 20 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config-server/pom.xml diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index edbcde127..b966c3129 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -19,7 +19,7 @@ 1.3.0-GA 3.1.0 - 0.5.0 + 0.6.0 1.0.8 0.1.1 4.0.1 @@ -64,6 +64,7 @@ ${acm.version} + com.alibaba.nacos nacos-client @@ -175,6 +176,11 @@ spring-cloud-alibaba-nacos-config ${project.version} + + org.springframework.cloud + spring-cloud-alibaba-nacos-config-server + ${project.version} + org.springframework.cloud spring-cloud-alicloud-acm @@ -219,6 +225,11 @@ spring-cloud-starter-alibaba-nacos-config ${project.version} + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-config-server + ${project.version} + org.springframework.cloud diff --git a/spring-cloud-starter-alibaba/pom.xml b/spring-cloud-starter-alibaba/pom.xml index 8726971a8..404431f38 100644 --- a/spring-cloud-starter-alibaba/pom.xml +++ b/spring-cloud-starter-alibaba/pom.xml @@ -13,6 +13,7 @@ Spring Cloud Alibaba Starters spring-cloud-starter-alibaba-nacos-config + spring-cloud-starter-alibaba-nacos-config-server spring-cloud-starter-alibaba-nacos-discovery spring-cloud-starter-alibaba-sentinel spring-cloud-starter-stream-rocketmq diff --git a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config-server/pom.xml b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config-server/pom.xml new file mode 100644 index 000000000..f5dae039f --- /dev/null +++ b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config-server/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + + + org.springframework.cloud + spring-cloud-starter-alibaba + 0.2.1.BUILD-SNAPSHOT + + spring-cloud-starter-alibaba-nacos-config-server + Spring Cloud Starter Alibaba Nacos Config Server + + + + org.springframework.cloud + spring-cloud-alibaba-nacos-config + + + + From 1fc98ebe7c3ca2574c50a9682474b2eaecc0c367 Mon Sep 17 00:00:00 2001 From: xiaolongzuo <150349407@qq.com> Date: Wed, 12 Dec 2018 17:56:16 +0800 Subject: [PATCH 02/24] closes #162, fixes #138. Add spring-cloud-alicloud-schedulerX module, and fix ACM starter rely on actuator. --- pom.xml | 1 + spring-cloud-alibaba-dependencies/pom.xml | 19 ++- .../src/main/asciidoc-zh/schedulerx.adoc | 131 ++++++++++++++++++ .../asciidoc-zh/spring-cloud-alibaba.adoc | 3 + .../acm-example/acm-local-example/pom.xml | 13 +- .../ans-example/ans-provider-example/pom.xml | 9 ++ spring-cloud-alibaba-examples/pom.xml | 1 + .../schedulerX-simple-task-example/pom.xml | 37 +++++ .../readme-zh.md | 47 +++++++ .../cloud/examples/ScxApplication.java | 32 +++++ .../alibaba/cloud/examples/SimpleTask.java | 35 +++++ .../src/main/resources/application.properties | 3 + spring-cloud-alicloud-acm/pom.xml | 1 + .../alicloud/acm/AcmAutoConfiguration.java | 8 -- .../AcmEndpointAutoConfiguration.java | 38 ++--- spring-cloud-alicloud-ans/pom.xml | 11 ++ spring-cloud-alicloud-context/pom.xml | 6 + .../AliCloudContextAutoConfiguration.java | 12 +- .../ans/AnsContextAutoConfiguration.java | 12 +- .../nacos/NacosParameterInitListener.java | 7 +- .../oss/OssContextAutoConfiguration.java | 4 +- .../scx/ScxContextAutoConfiguration.java | 71 ++++++++++ .../alicloud/context/scx/ScxProperties.java | 51 +++++++ .../statistics/StatisticsTaskStarter.java | 108 +++++++++++++++ .../main/resources/META-INF/spring.factories | 7 +- .../AliCloudSpringApplicationTests.java | 4 +- .../scx/ScxAutoConfigurationTests.java | 53 +++++++ .../alicloud/scx/ScxAutoConfiguration.java | 23 +++ spring-cloud-alicloud-schedulerX/pom.xml | 33 +++++ .../alicloud/scx/ScxAutoConfiguration.java | 29 ++++ .../main/resources/META-INF/spring.factories | 2 + spring-cloud-starter-alicloud/pom.xml | 1 + .../pom.xml | 20 +++ 33 files changed, 782 insertions(+), 50 deletions(-) create mode 100644 spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc create mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml create mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md create mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java create mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java create mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties create mode 100644 spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java create mode 100644 spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxProperties.java create mode 100644 spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java create mode 100644 spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/scx/ScxAutoConfigurationTests.java create mode 100644 spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java create mode 100644 spring-cloud-alicloud-schedulerX/pom.xml create mode 100644 spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java create mode 100644 spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories create mode 100644 spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml diff --git a/pom.xml b/pom.xml index b0532ec39..68db75410 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,7 @@ spring-cloud-alicloud-oss spring-cloud-alicloud-acm spring-cloud-alicloud-ans + spring-cloud-alicloud-schedulerX diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index b966c3129..58578cf22 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -23,9 +23,10 @@ 1.0.8 0.1.1 4.0.1 - 1.0.0 + 1.0.1 2.16.0 4.3.1 + 2.3.1-SNAPSHOT @@ -63,6 +64,11 @@ acm-sdk ${acm.version} + + com.alibaba.schedulerx + schedulerx-client + ${schedulerX.version} + @@ -191,6 +197,11 @@ spring-cloud-alicloud-ans ${project.version} + + org.springframework.cloud + spring-cloud-alicloud-schedulerX + ${project.version} + org.springframework.cloud spring-cloud-alicloud-context @@ -243,6 +254,12 @@ ${project.version} + + org.springframework.cloud + spring-cloud-starter-alicloud-schedulerX + ${project.version} + + org.springframework.cloud spring-cloud-starter-stream-rocketmq diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc new file mode 100644 index 000000000..fbe1307c4 --- /dev/null +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc @@ -0,0 +1,131 @@ +== Spring Cloud AliCloud SchedulerX + +SchedulerX(分布式任务调度) 是隶属于阿里云EDAS产品的组件, Spring Cloud AliCloud SchedulerX 提供了在Spring Cloud的配置规范下,分布式任务调度的功能支持。SchedulerX可提供秒级、精准、高可靠、高可用的定时任务调度服务,并支持多种类型的任务调度,如简单单机任务、简单多机任务、脚本任务以及网格任务。 + +=== 如何引入 Spring Cloud AliCloud SchedulerX + +Spring Cloud Alibaba 已经发布了0.2.1版本,需要首先导入依赖管理POM。 + +[source,xml] +---- + + + + org.springframework.cloud + spring-cloud-alibaba-dependencies + 0.2.1.RELEASE + pom + import + + + +---- + +接下来引入 Spring Cloud AliCloud SchedulerX Starter 即可。 + +[source,xml] +---- + + org.springframework.cloud + spring-cloud-starter-alicloud-schedulerX + +---- + +=== 启动SchedulerX任务调度 + +当客户端引入了 Spring Cloud AliCloud SchedulerX Starter 以后,只需要进行一些简单的配置,就可以自动初始化SchedulerX的任务调度服务。 + +以下是一个简单的应用示例。 + +[source,java] +---- +@SpringBootApplication +public class ScxApplication { + + public static void main(String[] args) { + SpringApplication.run(ScxApplication.class, args); + } + +} +---- + +在application.properties中,需要加上以下配置。 + +[source,properties] +---- +server.port=18033 +# 其中cn-test是SchedulerX的测试区域 +spring.cloud.alicloud.scx.group-id=*** +spring.cloud.alicloud.edas.namespace=cn-test +---- + +在获取group-id之前,需要首先 https://account.aliyun.com/register/register.htm?spm=5176.8142029.388261.26.e9396d3eEIv28g&oauth_callback=https%3A%2F%2Fwww.aliyun.com%2F[注册阿里云账号] ,然后 https://common-buy.aliyun.com/?spm=5176.11451019.0.0.6f5965c0Uq5tue&commodityCode=edaspostpay#/buy[开通EDAS服务] ,并 https://edas.console.aliyun.com/#/edasTools[开通分布式任务管理组件] 。 + +其中group-id的获取,请参考 https://help.aliyun.com/document_detail/98784.html?spm=a2c4g.11186623.2.17.23c87da9P2F3tG[这里]。 + +NOTE: 在创建group的时候,要选择"测试"区域。 + +=== 编写一个简单任务 + +简单任务是最常用的任务类型,只需要实现 ScxSimpleJobProcessor 接口即可。 + +以下是一个简单的单机类型任务示例。 + +[source,java] +---- +public class SimpleTask implements ScxSimpleJobProcessor { + + @Override + public ProcessResult process(ScxSimpleJobContext context) { + System.out.println("-----------Hello world---------------"); + ProcessResult processResult = new ProcessResult(true); + return processResult; + } + +} +---- + +=== 对任务进行调度 + +进入[SchedulerX任务列表](https://edas.console.aliyun.com/#/edasSchedulerXJob?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建Job",创建一个Job,即如下所示。 + +[source,text] +---- +Job分组:测试——***-*-*-**** +Job处理接口:org.springframework.cloud.alibaba.cloud.examples.SimpleTask +类型:简单Job单机版 +定时表达式:默认选项——0 * * * * ? +Job描述:无 +自定义参数:无 +---- + +以上任务类型选择了"简单Job单机版",并且制定了Cron表达式为"0 * * * * ?",这意味着,每过一分钟,任务将会被执行且只执行一次。 + +更多任务类型,请参考 https://help.aliyun.com/document_detail/43136.html?spm=a2c4g.11186623.6.703.64e17da9br61ZS[SchedulerX官方文档]。 + +=== 生产环境使用 + +以上使用的都是SchedulerX的"测试"区域,主要用于本地调试和测试。 + +在生产级别,除了上面的group-id和namespace以外,还需要一些额外的配置,如下所示。 + +[source,properties] +---- +server.port=18033 +# 其中cn-test是SchedulerX的测试区域 +spring.cloud.alicloud.scx.group-id=*** +spring.cloud.alicloud.edas.namespace=*** +# 当应用运行在EDAS上时,以下配置不需要手动配置。 +spring.cloud.alicloud.access-key=*** +spring.cloud.alicloud.secret-key=*** +# 以下配置不是必须的,请参考SchedulerX文档 +spring.cloud.alicloud.scx.domain-name=*** +---- + +其中group-id与之前的获取方式一样,namespace则是从EDAS控制台左侧"命名空间"列表中获取命名空间ID。 + +NOTE: group-id必须创建在namespace当中。 + +access-key以及secret-key为阿里云账号的AK/SK信息,如果应用在EDAS上部署,则不需要填写这两项信息,否则请前往 https://usercenter.console.aliyun.com/#/manage/ak[安全信息管理]获取。 + +domain-name并不是必须的,具体请参考 https://help.aliyun.com/document_detail/35359.html?spm=a2c4g.11186623.6.704.4abf1994SbgXYS[SchedulerX官方文档]。 \ No newline at end of file diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc index 77083a323..c831c366d 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc @@ -29,3 +29,6 @@ include::acm.adoc[] include::oss.adoc[] +include::schedulerx.adoc[] + + diff --git a/spring-cloud-alibaba-examples/acm-example/acm-local-example/pom.xml b/spring-cloud-alibaba-examples/acm-example/acm-local-example/pom.xml index 504f19ea7..ce6a17408 100644 --- a/spring-cloud-alibaba-examples/acm-example/acm-local-example/pom.xml +++ b/spring-cloud-alibaba-examples/acm-example/acm-local-example/pom.xml @@ -20,9 +20,14 @@ org.springframework.boot spring-boot-starter-web - - org.springframework.boot - spring-boot-starter-actuator - + + + + + org.springframework.boot + spring-boot-maven-plugin + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/ans-example/ans-provider-example/pom.xml b/spring-cloud-alibaba-examples/ans-example/ans-provider-example/pom.xml index 1d188a68c..87b059091 100644 --- a/spring-cloud-alibaba-examples/ans-example/ans-provider-example/pom.xml +++ b/spring-cloud-alibaba-examples/ans-example/ans-provider-example/pom.xml @@ -25,4 +25,13 @@ spring-boot-starter-actuator + + + + + org.springframework.boot + spring-boot-maven-plugin + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index 7d6b3b263..d69279e49 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -30,6 +30,7 @@ acm-example/acm-local-example rocketmq-example spring-cloud-bus-rocketmq-example + schedulerX-example/schedulerX-simple-task-example diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml new file mode 100644 index 000000000..2115553c8 --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml @@ -0,0 +1,37 @@ + + + + spring-cloud-alibaba-examples + org.springframework.cloud + 0.2.1.BUILD-SNAPSHOT + ../../pom.xml + + 4.0.0 + schedulerX-simple-task-example + + + + org.springframework.cloud + spring-cloud-starter-alicloud-schedulerX + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md new file mode 100644 index 000000000..9e9b6f02b --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md @@ -0,0 +1,47 @@ +# SchedulerX Simple Task Example + +## 项目说明 + +本项目展示了,在Spring Cloud体系中,如何快如接入SchedulerX,使用任务调度服务。 + +SchedulerX 是阿里中间件团队开发的一款分布式任务调度产品。它为您提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。 + +## 示例 + +### 准备工作 + +1. 请先[注册阿里云账号](https://account.aliyun.com/register/register.htm?spm=5176.8142029.388261.26.e9396d3eEIv28g&oauth_callback=https%3A%2F%2Fwww.aliyun.com%2F) + +2. SchedulerX集成到了EDAS组件中心,因此需要[开通EDAS服务](https://common-buy.aliyun.com/?spm=5176.11451019.0.0.6f5965c0Uq5tue&commodityCode=edaspostpay#/buy) + +3. 到[EDAS组件中心](https://edas.console.aliyun.com/#/edasTools)开通SchedulerX组件,即分布式任务管理。 + +4. 进入[SchedulerX分组管理](https://edas.console.aliyun.com/#/schedulerXGroup?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建分组",创建一个分组。 + +5. 将"分组ID"的值填写到`application.properties`文件中`key`为`spring.cloud.alicloud.scx.group-id`对应的value值,即如下所示。 + + spring.cloud.alicloud.scx.group-id=111-1-1-1111 + +6. 进入[SchedulerX任务列表](https://edas.console.aliyun.com/#/edasSchedulerXJob?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建Job",创建一个Job,即如下所示。 + + Job分组:测试——111-1-1-1111 + Job处理接口:org.springframework.cloud.alibaba.cloud.examples.SimpleTask + 类型:简单Job单机版 + 定时表达式:默认选项——0 * * * * ? + Job描述:无 + 自定义参数:无 + +### 启动应用 + +直接运行main class,即`ScxApplication`。 + +### 查看效果 + +观察应用的控制台日志输出,可以看到每一分钟会打印一次如下日志。 + +``` + -----------Hello world--------------- +``` + +如果您对 Spring Cloud SchedulerX Starter 有任何建议或想法,欢迎提交 issue 中或者通过其他社区渠道向我们反馈。 + diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java new file mode 100644 index 000000000..baccfd4f0 --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alibaba.cloud.examples; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author xiaolongzuo + */ +@SpringBootApplication +public class ScxApplication { + + public static void main(String[] args) { + SpringApplication.run(ScxApplication.class, args); + } + +} diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java new file mode 100644 index 000000000..e49c0a052 --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alibaba.cloud.examples; + +import com.alibaba.edas.schedulerx.ProcessResult; +import com.alibaba.edas.schedulerx.ScxSimpleJobContext; +import com.alibaba.edas.schedulerx.ScxSimpleJobProcessor; + +/** + * @author xiaolongzuo + */ +public class SimpleTask implements ScxSimpleJobProcessor { + + @Override + public ProcessResult process(ScxSimpleJobContext context) { + System.out.println("-----------Hello world---------------"); + ProcessResult processResult = new ProcessResult(true); + return processResult; + } + +} diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties new file mode 100644 index 000000000..a995fa3fa --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties @@ -0,0 +1,3 @@ +server.port=18033 +spring.cloud.alicloud.scx.group-id=*** +spring.cloud.alicloud.edas.namespace=cn-test diff --git a/spring-cloud-alicloud-acm/pom.xml b/spring-cloud-alicloud-acm/pom.xml index e63810876..e4ebc4702 100644 --- a/spring-cloud-alicloud-acm/pom.xml +++ b/spring-cloud-alicloud-acm/pom.xml @@ -44,6 +44,7 @@ org.springframework.boot spring-boot-starter-actuator + provided true diff --git a/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/AcmAutoConfiguration.java b/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/AcmAutoConfiguration.java index 36da2e858..9599decb2 100644 --- a/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/AcmAutoConfiguration.java +++ b/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/AcmAutoConfiguration.java @@ -18,11 +18,9 @@ package org.springframework.cloud.alicloud.acm; import org.springframework.beans.BeansException; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.cloud.alicloud.acm.endpoint.AcmHealthIndicator; import org.springframework.cloud.alicloud.acm.refresh.AcmContextRefresher; import org.springframework.cloud.alicloud.acm.refresh.AcmRefreshHistory; import org.springframework.cloud.alicloud.context.acm.AcmIntegrationProperties; -import org.springframework.cloud.alicloud.context.acm.AcmProperties; import org.springframework.cloud.context.refresh.ContextRefresher; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -47,12 +45,6 @@ public class AcmAutoConfiguration implements ApplicationContextAware { return new AcmPropertySourceRepository(applicationContext); } - @Bean - public AcmHealthIndicator acmHealthIndicator(AcmProperties acmProperties, - AcmPropertySourceRepository acmPropertySourceRepository) { - return new AcmHealthIndicator(acmProperties, acmPropertySourceRepository); - } - @Bean public AcmRefreshHistory acmRefreshHistory() { return new AcmRefreshHistory(); diff --git a/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/endpoint/AcmEndpointAutoConfiguration.java b/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/endpoint/AcmEndpointAutoConfiguration.java index 2154c7701..86c7fa184 100644 --- a/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/endpoint/AcmEndpointAutoConfiguration.java +++ b/spring-cloud-alicloud-acm/src/main/java/org/springframework/cloud/alicloud/acm/endpoint/AcmEndpointAutoConfiguration.java @@ -33,20 +33,26 @@ import org.springframework.context.annotation.Bean; @ConditionalOnClass(name = "org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration") public class AcmEndpointAutoConfiguration { - @Autowired - private AcmProperties acmProperties; - - @Autowired - private AcmRefreshHistory acmRefreshHistory; - - @Autowired - private AcmPropertySourceRepository acmPropertySourceRepository; - - @ConditionalOnMissingBean - @ConditionalOnEnabledEndpoint - @Bean - public AcmEndpoint acmEndpoint() { - return new AcmEndpoint(acmProperties, acmRefreshHistory, - acmPropertySourceRepository); - } + @Autowired + private AcmProperties acmProperties; + + @Autowired + private AcmRefreshHistory acmRefreshHistory; + + @Autowired + private AcmPropertySourceRepository acmPropertySourceRepository; + + @ConditionalOnMissingBean + @ConditionalOnEnabledEndpoint + @Bean + public AcmEndpoint acmEndpoint() { + return new AcmEndpoint(acmProperties, acmRefreshHistory, + acmPropertySourceRepository); + } + + @Bean + public AcmHealthIndicator acmHealthIndicator(AcmProperties acmProperties, + AcmPropertySourceRepository acmPropertySourceRepository) { + return new AcmHealthIndicator(acmProperties, acmPropertySourceRepository); + } } diff --git a/spring-cloud-alicloud-ans/pom.xml b/spring-cloud-alicloud-ans/pom.xml index 56fba7fbf..6ed883c09 100644 --- a/spring-cloud-alicloud-ans/pom.xml +++ b/spring-cloud-alicloud-ans/pom.xml @@ -44,9 +44,20 @@ spring-cloud-commons + + org.slf4j + slf4j-api + + org.springframework.cloud spring-cloud-starter-netflix-ribbon + + + org.springframework.boot + spring-boot-starter + + diff --git a/spring-cloud-alicloud-context/pom.xml b/spring-cloud-alicloud-context/pom.xml index 5b3a0f1a1..64681afee 100644 --- a/spring-cloud-alicloud-context/pom.xml +++ b/spring-cloud-alicloud-context/pom.xml @@ -38,6 +38,12 @@ provided + + com.alibaba.schedulerx + schedulerx-client + provided + + com.alibaba.ans ans-sdk diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/AliCloudContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/AliCloudContextAutoConfiguration.java index f0f2f5722..e7c84a539 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/AliCloudContextAutoConfiguration.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/AliCloudContextAutoConfiguration.java @@ -16,14 +16,24 @@ package org.springframework.cloud.alicloud.context; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cloud.commons.util.InetUtils; +import org.springframework.cloud.commons.util.InetUtilsProperties; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author xiaolongzuo */ @Configuration -@EnableConfigurationProperties(AliCloudProperties.class) +@EnableConfigurationProperties({ AliCloudProperties.class, InetUtilsProperties.class }) public class AliCloudContextAutoConfiguration { + @Bean + @ConditionalOnMissingBean + public InetUtils inetUtils(InetUtilsProperties inetUtilsProperties) { + return new InetUtils(inetUtilsProperties); + } + } diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/ans/AnsContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/ans/AnsContextAutoConfiguration.java index fc58b69e9..b1a7d64d0 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/ans/AnsContextAutoConfiguration.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/ans/AnsContextAutoConfiguration.java @@ -18,12 +18,8 @@ package org.springframework.cloud.alicloud.context.ans; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.alicloud.context.edas.EdasContextAutoConfiguration; -import org.springframework.cloud.commons.util.InetUtils; -import org.springframework.cloud.commons.util.InetUtilsProperties; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** @@ -31,14 +27,8 @@ import org.springframework.context.annotation.Configuration; */ @Configuration @ConditionalOnClass(name = "org.springframework.cloud.alicloud.ans.AnsAutoConfiguration") -@EnableConfigurationProperties({ AnsProperties.class, InetUtilsProperties.class }) +@EnableConfigurationProperties(AnsProperties.class) @ImportAutoConfiguration(EdasContextAutoConfiguration.class) public class AnsContextAutoConfiguration { - @Bean - @ConditionalOnMissingBean - public InetUtils inetUtils(InetUtilsProperties inetUtilsProperties) { - return new InetUtils(inetUtilsProperties); - } - } diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java index c795d2acb..60945754f 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java @@ -1,12 +1,13 @@ package org.springframework.cloud.alicloud.context.nacos; -import com.alibaba.cloud.context.edas.EdasChangeOrderConfiguration; -import com.alibaba.cloud.context.edas.EdasChangeOrderConfigurationFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; import org.springframework.context.ApplicationListener; +import com.alibaba.cloud.context.edas.EdasChangeOrderConfiguration; +import com.alibaba.cloud.context.edas.EdasChangeOrderConfigurationFactory; + public class NacosParameterInitListener implements ApplicationListener { private static final Logger log = LoggerFactory @@ -20,7 +21,7 @@ public class NacosParameterInitListener private void preparedNacosConfiguration() { EdasChangeOrderConfiguration edasChangeOrderConfiguration = EdasChangeOrderConfigurationFactory - .buildEdasChangeOrderConfiguration(); + .getEdasChangeOrderConfiguration(); log.info("Initialize Nacos Parameter from edas change order,is edas managed {}.", edasChangeOrderConfiguration.isEdasManaged()); if (!edasChangeOrderConfiguration.isEdasManaged()) { diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java index e1993a376..0a3e13092 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java @@ -51,9 +51,9 @@ public class OssContextAutoConfiguration { Assert.isTrue(!StringUtils.isEmpty(ossProperties.getEndpoint()), "Oss endpoint can't be empty."); Assert.isTrue(!StringUtils.isEmpty(aliCloudProperties.getAccessKey()), - "Access key can't be empty."); + "${spring.cloud.alicloud.access-key} can't be empty."); Assert.isTrue(!StringUtils.isEmpty(aliCloudProperties.getSecretKey()), - "Secret key can't be empty."); + "${spring.cloud.alicloud.secret-key} can't be empty."); return new OSSClientBuilder().build(ossProperties.getEndpoint(), aliCloudProperties.getAccessKey(), aliCloudProperties.getSecretKey(), ossProperties.getConfig()); diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java new file mode 100644 index 000000000..075538e5d --- /dev/null +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.context.scx; + +import javax.annotation.PostConstruct; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cloud.alicloud.context.AliCloudProperties; +import org.springframework.cloud.alicloud.context.edas.EdasContextAutoConfiguration; +import org.springframework.cloud.alicloud.context.edas.EdasProperties; +import org.springframework.context.annotation.Configuration; + +import com.alibaba.cloud.context.edas.AliCloudEdasSdk; +import com.alibaba.cloud.context.scx.AliCloudScxInitializer; +import com.alibaba.dts.common.exception.InitException; + +/** + * @author xiaolongzuo + */ +@Configuration +@ConditionalOnClass(name = "org.springframework.cloud.alicloud.scx.ScxAutoConfiguration") +@EnableConfigurationProperties(ScxProperties.class) +@ImportAutoConfiguration(EdasContextAutoConfiguration.class) +public class ScxContextAutoConfiguration { + + private static final Logger log = LoggerFactory + .getLogger(ScxContextAutoConfiguration.class); + + @Autowired + private AliCloudProperties aliCloudProperties; + + @Autowired + private EdasProperties edasProperties; + + @Autowired + private ScxProperties scxProperties; + + @Autowired + private AliCloudEdasSdk aliCloudEdasSdk; + + @PostConstruct + public void initAcmProperties() { + try { + AliCloudScxInitializer.initialize(aliCloudProperties, edasProperties, + scxProperties, aliCloudEdasSdk); + } + catch (InitException e) { + log.error("Init SchedulerX failed.", e); + throw new RuntimeException(e); + } + } +} diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxProperties.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxProperties.java new file mode 100644 index 000000000..db6a00d62 --- /dev/null +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxProperties.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.context.scx; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import com.alibaba.cloud.context.scx.ScxConfiguration; + +/** + * @author xiaolongzuo + */ +@ConfigurationProperties("spring.cloud.alicloud.scx") +public class ScxProperties implements ScxConfiguration { + + private String groupId; + + private String domainName; + + @Override + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + @Override + public String getDomainName() { + return domainName; + } + + public void setDomainName(String domainName) { + this.domainName = domainName; + } + +} diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java new file mode 100644 index 000000000..41c3591b4 --- /dev/null +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.context.statistics; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.cloud.alicloud.context.acm.AcmContextBootstrapConfiguration; +import org.springframework.cloud.alicloud.context.acm.AcmProperties; +import org.springframework.cloud.alicloud.context.ans.AnsContextAutoConfiguration; +import org.springframework.cloud.alicloud.context.ans.AnsProperties; +import org.springframework.cloud.alicloud.context.edas.EdasProperties; +import org.springframework.cloud.alicloud.context.oss.OssContextAutoConfiguration; +import org.springframework.cloud.alicloud.context.oss.OssProperties; +import org.springframework.cloud.alicloud.context.scx.ScxContextAutoConfiguration; +import org.springframework.cloud.alicloud.context.scx.ScxProperties; +import org.springframework.context.annotation.Configuration; + +import com.alibaba.cloud.context.AliCloudServerMode; +import com.alibaba.cloud.context.edas.AliCloudEdasSdk; +import com.alibaba.cloud.context.statistics.StatisticsTask; + +/** + * @author xiaolongzuo + */ +@Configuration +@AutoConfigureAfter({ ScxContextAutoConfiguration.class, + OssContextAutoConfiguration.class, AnsContextAutoConfiguration.class, + AcmContextBootstrapConfiguration.class }) +public class StatisticsTaskStarter implements InitializingBean { + + @Autowired(required = false) + private AliCloudEdasSdk aliCloudEdasSdk; + + @Autowired(required = false) + private EdasProperties edasProperties; + + @Autowired(required = false) + private ScxProperties scxProperties; + + @Autowired(required = false) + private OssProperties ossProperties; + + @Autowired(required = false) + private AnsProperties ansProperties; + + @Autowired(required = false) + private AcmProperties acmProperties; + + @Autowired(required = false) + private ScxContextAutoConfiguration scxContextAutoConfiguration; + + @Autowired(required = false) + private OssContextAutoConfiguration ossContextAutoConfiguration; + + @Autowired(required = false) + private AnsContextAutoConfiguration ansContextAutoConfiguration; + + @Autowired(required = false) + private AcmContextBootstrapConfiguration acmContextBootstrapConfiguration; + + @Override + public void afterPropertiesSet() { + StatisticsTask statisticsTask = new StatisticsTask(aliCloudEdasSdk, + edasProperties, getComponents()); + statisticsTask.start(); + } + + private List getComponents() { + List components = new ArrayList<>(); + if (scxContextAutoConfiguration != null && scxProperties != null) { + components.add("SC-SCX"); + } + if (ossContextAutoConfiguration != null && ossProperties != null) { + components.add("SC-OSS"); + } + boolean edasEnabled = edasProperties != null && edasProperties.isEnabled(); + boolean ansEnableEdas = edasEnabled || (ansProperties != null + && ansProperties.getServerMode() == AliCloudServerMode.EDAS); + if (ansContextAutoConfiguration != null && ansEnableEdas) { + components.add("SC-ANS"); + } + boolean acmEnableEdas = edasEnabled || (acmProperties != null + && acmProperties.getServerMode() == AliCloudServerMode.EDAS); + if (acmContextBootstrapConfiguration != null && acmEnableEdas) { + components.add("SC-ACM"); + } + return components; + } + +} diff --git a/spring-cloud-alicloud-context/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-context/src/main/resources/META-INF/spring.factories index b5ed9c32a..16457232d 100644 --- a/spring-cloud-alicloud-context/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-alicloud-context/src/main/resources/META-INF/spring.factories @@ -4,7 +4,8 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.cloud.alicloud.context.AliCloudContextAutoConfiguration,\ org.springframework.cloud.alicloud.context.edas.EdasContextAutoConfiguration,\ org.springframework.cloud.alicloud.context.ans.AnsContextAutoConfiguration,\ - org.springframework.cloud.alicloud.context.oss.OssContextAutoConfiguration + org.springframework.cloud.alicloud.context.oss.OssContextAutoConfiguration,\ + org.springframework.cloud.alicloud.context.scx.ScxContextAutoConfiguration,\ + org.springframework.cloud.alicloud.context.statistics.StatisticsTaskStarter org.springframework.context.ApplicationListener=\ - org.springframework.cloud.alicloud.context.ans.AnsContextApplicationListener,\ - org.springframework.cloud.alicloud.context.nacos.NacosParameterInitListener \ No newline at end of file + org.springframework.cloud.alicloud.context.ans.AnsContextApplicationListener \ No newline at end of file diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/AliCloudSpringApplicationTests.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/AliCloudSpringApplicationTests.java index 636adf64e..471ffbb97 100644 --- a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/AliCloudSpringApplicationTests.java +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/AliCloudSpringApplicationTests.java @@ -33,7 +33,9 @@ import org.springframework.test.context.junit4.SpringRunner; "spring.application.name=myapp", "spring.cloud.alicloud.edas.application.name=myapp", "spring.cloud.alicloud.access-key=ak", "spring.cloud.alicloud.secret-key=sk", - "spring.cloud.alicloud.oss.endpoint=test" }, webEnvironment = RANDOM_PORT) + "spring.cloud.alicloud.oss.endpoint=test", + "spring.cloud.alicloud.scx.group-id=1-2-3-4", + "spring.cloud.alicloud.edas.namespace=cn-test" }, webEnvironment = RANDOM_PORT) @DirtiesContext public class AliCloudSpringApplicationTests { diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/scx/ScxAutoConfigurationTests.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/scx/ScxAutoConfigurationTests.java new file mode 100644 index 000000000..199701ec7 --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/scx/ScxAutoConfigurationTests.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.context.scx; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.cloud.alicloud.context.edas.EdasProperties; +import org.springframework.cloud.alicloud.context.oss.OssProperties; + +import com.aliyun.oss.OSS; + +/** + * {@link OSS} {@link OssProperties} Test + * + * @author Jim + */ +public class ScxAutoConfigurationTests { + + private ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(ScxContextAutoConfiguration.class)) + .withPropertyValues("spring.cloud.alicloud.scx.group-id=1-2-3-4") + .withPropertyValues("spring.cloud.alicloud.edas.namespace=cn-test"); + + @Test + public void testSxcProperties() { + this.contextRunner.run(context -> { + assertThat(context.getBeansOfType(ScxProperties.class).size() == 1).isTrue(); + EdasProperties edasProperties = context.getBean(EdasProperties.class); + ScxProperties scxProperties = context.getBean(ScxProperties.class); + assertThat(scxProperties.getGroupId()).isEqualTo("1-2-3-4"); + assertThat(edasProperties.getNamespace()).isEqualTo("cn-test"); + assertThat(scxProperties.getDomainName()).isNull(); + }); + } + +} diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java new file mode 100644 index 000000000..a1128b924 --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.scx; + +/** + * @author xiaolongzuo + */ +public class ScxAutoConfiguration { +} diff --git a/spring-cloud-alicloud-schedulerX/pom.xml b/spring-cloud-alicloud-schedulerX/pom.xml new file mode 100644 index 000000000..2bf62ddfa --- /dev/null +++ b/spring-cloud-alicloud-schedulerX/pom.xml @@ -0,0 +1,33 @@ + + + + spring-cloud-alibaba + org.springframework.cloud + 0.2.1.BUILD-SNAPSHOT + + 4.0.0 + + spring-cloud-alicloud-schedulerX + + + + org.springframework.cloud + spring-cloud-alicloud-context + + + com.alibaba.schedulerx + schedulerx-client + + + com.aliyun + aliyun-java-sdk-core + + + com.aliyun + aliyun-java-sdk-edas + + + + \ No newline at end of file diff --git a/spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java b/spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java new file mode 100644 index 000000000..77669f505 --- /dev/null +++ b/spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.scx; + +import org.springframework.context.annotation.Configuration; + +/** + * placeholder configuration + * + * @author xiaolongzuo + */ +@Configuration +public class ScxAutoConfiguration { + +} diff --git a/spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories new file mode 100644 index 000000000..c0fc2249f --- /dev/null +++ b/spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + org.springframework.cloud.alicloud.scx.ScxAutoConfiguration \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/pom.xml b/spring-cloud-starter-alicloud/pom.xml index eb2ae1aa9..ec6276041 100644 --- a/spring-cloud-starter-alicloud/pom.xml +++ b/spring-cloud-starter-alicloud/pom.xml @@ -14,5 +14,6 @@ spring-cloud-starter-alicloud-oss spring-cloud-starter-alicloud-acm spring-cloud-starter-alicloud-ans + spring-cloud-starter-alicloud-schedulerX \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml new file mode 100644 index 000000000..a7ada6507 --- /dev/null +++ b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + + + org.springframework.cloud + spring-cloud-starter-alicloud + 0.2.1.BUILD-SNAPSHOT + + spring-cloud-starter-alicloud-schedulerX + Spring Cloud Starter Alibaba Cloud OSS + + + + org.springframework.cloud + spring-cloud-alicloud-schedulerX + + + + From 357c00556a978f1b1846c534c1b8e4e803333bb7 Mon Sep 17 00:00:00 2001 From: pbting <314226532@qq.com> Date: Wed, 12 Dec 2018 17:58:20 +0800 Subject: [PATCH 03/24] add a new feature of that support custom Data Id for Nacos Config --- .../src/main/asciidoc-zh/nacos-config.adoc | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc index 1cd2e71a0..90824a210 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc @@ -301,3 +301,64 @@ spring.cloud.nacos.config.group=DEVELOP_GROUP ---- NOTE: 该配置必须放在 bootstrap.properties 文件中。并且在添加配置时 Group 的值一定要和 `spring.cloud.nacos.config.group` 的配置值一致。 + +=== 支持自定义扩展的 Data Id 配置 + +Spring Cloud Alibaba Nacos Config 从 0.2.1 版本后,可支持自定义 Data Id 的配置。关于这部分详细的设计可参考 https://github.com/spring-cloud-incubator/spring-cloud-alibaba/issues/141[这里]。 +一个完整的配置案例如下所示: + +[source,properties] +---- +spring.application.name=opensource-service-provider +spring.cloud.nacos.config.server-addr=127.0.0.1:8848 + +# config external configuration +# 1、Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新 +spring.cloud.nacos.config.ext-config[0].data-id=ext-config-common01.properties + +# 2、Data Id 不在默认的组,不支持动态刷新 +spring.cloud.nacos.config.ext-config[1].data-id=ext-config-common02.properties +spring.cloud.nacos.config.ext-config[1].group=GLOBALE_GROUP + +# 3、Data Id 既不在默认的组,也支持动态刷新 +spring.cloud.nacos.config.ext-config[2].data-id=ext-config-common03.properties +spring.cloud.nacos.config.ext-config[2].group=REFRESH_GROUP +spring.cloud.nacos.config.ext-config[2].refresh=true +---- + +可以看到: + +* 通过 `spring.cloud.nacos.config.ext-config[n].data-id` 的配置方式来支持多个 Data Id 的配置。 +* 通过 `spring.cloud.nacos.config.ext-config[n].group` 的配置方式自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。 +* 通过 `spring.cloud.nacos.config.ext-config[2].refresh` 的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, +感知到最新的配置值。默认是不支持的。 + + +NOTE: 多个 Data Id 同时配置时,他的优先级关系是 `spring.cloud.nacos.config.ext-config[n].data-id` 其中 n 的值越大,优先级越高。 + +NOTE: `spring.cloud.nacos.config.ext-config[n].data-id` 的值必须带文件扩展名,文件扩展名既可支持 properties,可以支持 yaml/yml。 +此时 `spring.cloud.nacos.config.file-extension` 的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。 + +通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。 + +为了更加清晰的在多个应用间配置共享的 Data Id ,你可以通过以下的方式来配置: + +[source,properties] +---- +spring.cloud.nacos.config.shared-dataids=bootstrap-common.properties,all-common.properties +spring.cloud.nacos.config.refreshable-dataids=bootstrap-common.properties +---- + +可以看到: + +* 通过 `spring.cloud.nacos.config.shared-dataids` 来支持多个共享 Data Id 的配置,多个之间用逗号隔开。 +* 通过 `spring.cloud.nacos.config.refreshable-dataids` 来支持哪些共享配置的 Data Id 在配置变化时,应用中是否可动态刷新, +感知到最新的配置值,多个 Data Id 之间用逗号隔开。如果没有明确配置,默认情况下所有共享配置的 Data Id 都不支持动态刷新。 + +NOTE: 通过 `spring.cloud.nacos.config.shared-dataids` 来支持多个共享配置的 Data Id 时, +多个共享配置间的一个优先级的关系我们约定:按照配置出现的先后顺序,即后面的优先级要高于前面。 + +NOTE: 通过 `spring.cloud.nacos.config.shared-dataids` 来配置时,Data Id 必须带文件扩展名,文件扩展名既可支持 properties,也可以支持 yaml/yml。 +此时 `spring.cloud.nacos.config.file-extension` 的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。 + +NOTE: `spring.cloud.nacos.config.refreshable-dataids` 给出哪些需要支持动态刷新时,Data Id 的值也必须明确给出文件扩展名。 \ No newline at end of file From a19a56b5e338ea93c76d5a36876b328685c4a580 Mon Sep 17 00:00:00 2001 From: pbting <314226532@qq.com> Date: Wed, 12 Dec 2018 18:01:41 +0800 Subject: [PATCH 04/24] update the reference document --- .../src/main/asciidoc-zh/nacos-config.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc index 90824a210..debd5fad8 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc @@ -330,13 +330,13 @@ spring.cloud.nacos.config.ext-config[2].refresh=true * 通过 `spring.cloud.nacos.config.ext-config[n].data-id` 的配置方式来支持多个 Data Id 的配置。 * 通过 `spring.cloud.nacos.config.ext-config[n].group` 的配置方式自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。 -* 通过 `spring.cloud.nacos.config.ext-config[2].refresh` 的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, +* 通过 `spring.cloud.nacos.config.ext-config[n].refresh` 的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。 NOTE: 多个 Data Id 同时配置时,他的优先级关系是 `spring.cloud.nacos.config.ext-config[n].data-id` 其中 n 的值越大,优先级越高。 -NOTE: `spring.cloud.nacos.config.ext-config[n].data-id` 的值必须带文件扩展名,文件扩展名既可支持 properties,可以支持 yaml/yml。 +NOTE: `spring.cloud.nacos.config.ext-config[n].data-id` 的值必须带文件扩展名,文件扩展名既可支持 properties,又可以支持 yaml/yml。 此时 `spring.cloud.nacos.config.file-extension` 的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。 通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。 From 6378a30a53e3b1960061a7316f25b1d8de4f5b3d Mon Sep 17 00:00:00 2001 From: xiaojing Date: Wed, 12 Dec 2018 22:09:23 +0800 Subject: [PATCH 05/24] update acm.doc --- .../src/main/asciidoc-zh/acm.adoc | 282 ++++++------------ 1 file changed, 89 insertions(+), 193 deletions(-) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc index 3473575d6..b6912de10 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc @@ -1,53 +1,17 @@ -= Spring Cloud AliCloud ACM +== Spring Cloud AliCloud ACM -Spring Cloud AliCloud ACM 提供了和阿里云上的ACM的集成。使得在项目中如果需要上云的用户可以非常方便无缝的对接阿里云,来享受云端提供的稳定服务。 +Spring Cloud AliCloud ACM 是阿里云提供的商业版应用配置管理(Application Configuration Management) 产品 在 Spring Cloud 应用侧的客户端实现,且目前完全免费。 -=== 快速开始 +Spring Cloud AliCloud ACM 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。 -为了能够在本地开发时可以使用和云上具有相同功能的ACM服务,我们提供了用于本地开发测试的轻量版配置中心。轻量版配置中心你可以理解为用于方便的本地开发测试的Saas平台。 +=== 如何引入 Spring Cloud AliCloud ACM -==== 基于properties文件扩展名的配置 - -===== 轻量版配置中心服务端初始化 - -1、轻量版配置中心的下载和启动方式可参考 https://help.aliyun.com/document_detail/44163.html?spm=a2c4g.11186623.6.677.5f206b82Z2mTCF[这里] - -2、启动好轻量版配置中心之后,在控制台中添加如下的配置。 - -[source,subs="normal"] ----- -Group: DEFAULT_GROOUP - -DataId: acm-config.properties - -Content: user.name=alibaba - user.age=56 ----- - -NOTE: data id是以 `properties` 为扩展名(默认的文件扩展名方式)。Group 的值目前只支持 DEFAULT_GROUP,注意在使用的过程中无需更改其默认值。 - -===== 客户端使用方式 - -为了能够在应用程序中使用ACM作为Sping Cloud Config的后端存储服务,在您构建Spring Boot 应用的同时添加一个Spring Boot Starter org.springframework.cloud:spring-cloud-starter-alicloud-acm。以下是一个基础的maven 依赖配置: +Spring Cloud Alibaba 已经发布了 0.2.0.RELEASE 版本,需要首先导入依赖管理POM。 [source,xml] ---- - - org.springframework.boot - spring-boot-starter-parent - 2.0.5.RELEASE - - - - - org.springframework.cloud - spring-cloud-dependencies - Finchley.SR1 - pom - import - org.springframework.cloud spring-cloud-alibaba-dependencies @@ -57,20 +21,23 @@ NOTE: data id是以 `properties` 为扩展名(默认的文件扩展名方式)。 +---- + +接下来引入 Spring Cloud AliCloud ACM Starter 即可。 - - - org.springframework.cloud - spring-cloud-starter-alicloud-acm - - - org.springframework.boot - spring-boot-starter - - +[source,xml] +---- + + org.springframework.cloud + spring-cloud-starter-alicloud-acm + ---- -现在你就可以创建一个标准的Spring Boot的应用。 +=== 使用 ACM 进行配置管理 + +当客户端引入了 Spring Cloud AliCloud ACM Starter 以后,应用启动时会自动从配置管理的服务端获取配置信息,并注入到 Spring 的 Environment 中。 + +以下是一个简单的应用示例。 [source,java] ---- @@ -86,204 +53,133 @@ public class ProviderApplication { } ---- -spring-cloud-starter-alicloud-acm 对于ACM服务端的基础配置有默认值(默认配置绑定到的ip和端口为127.0.0.1和8080),因此在运行此Example 之前, 你只需在 bootstrap.properties 配置文件配置spring.application.name即可,例如: +既然需要从配置中心服务端获取配置信息,那么肯定需要配置服务端的地址,在 bootstrap.properties 中,还需要配置上以下信息。 [source,properties] ---- -spring.application.name=acm-config #注意,spring.application.name 必须要放在bootstrap.properties中 +# 必选,应用名会被作为从服务端获取配置 key 的关键词组成部分 +spring.application.name=acm-config +server.port=18081 +# 以下就是配置中心服务端的IP和端口配置 +spring.cloud.alicloud.acm.server-list=127.0.0.1 +spring.cloud.alicloud.acm.server-port=8080 ---- -启动这个Example,可以在控制台看到打印出的值正是我们在轻量版配置中心上预先配置的值。 +NOTE: 此时没有启动配置中心,启动应用会报错,因此在应用启动之前,应当首先启动配置中心。 -[source,subs="normal"] ----- -2018-11-05 11:41:50.661 INFO 1541 --- [main] com.alibaba.demo.normal.ProviderApp : Started ProviderApp in 15.809 seconds (JVM running for 16.513) -user name :alibaba; age: 56 -2018-11-05 11:41:50.710 INFO 1541 --- [gPullingdefault] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@1f854e9e: startup date [Mon Nov 05 11:41:50 CST 2018]; root of context hierarchy ----- -==== 基于yaml文件扩展名的配置 +=== 启动配置中心 -spring-cloud-starter-alicloud-acm 默认对文件扩展名为properties的支持,如果你习惯使用yaml格式来作为您的基础配置,也是可以支持的。这个时候你只需要在bootstrap.properties配置文件中显示的来声明使用的文件扩展名,如下所示 +ACM 使用的配置中心有两种,一种是完全免费的轻量版配置中心,主要用于开发和本地调试,一种是云上配置中心ACM。通常情况下,可以使用轻量版配置中心作为开发和测试环境,使用云上的 ACM 作为灰度和生产环境。 -[source,properties] ----- -spring.application.name=acm-config -spring.cloud.nacos.config.file-extension=yaml #显示的声明使用的文件扩展名 ----- +==== 启动轻量版配置中心 -同时还需在轻量版配置中心的控制台新增一个dataid为yaml为扩展名的配置,如下所示: +轻量版配置中心的下载和启动方式可参考 https://help.aliyun.com/document_detail/44163.html?spm=a2c4g.11186623.6.677.5f206b82Z2mTCF[这里] -[source,subs="normal"] ----- -Group: DEFAULT_GROUP +NOTE: 只需要进行第1步(下载轻量配置中心)和第2步(启动轻量配置中心)即可,第3步(配置hosts)在与 ACM 结合使用时,不需要操作。 -DataId: acm-config.yaml -Content: user.name: yaml-alibaba - user.age: 102 ----- +==== 使用云上配置中心 -NOTE: 这里的DataId的命名规则。${spring.application.name}.${spring.cloud.nacos.config.file-extension}。因为配置中配置的是 acm-config和yaml,因此根据规则这里的DataId的命名是:acm-config.yaml。 +使用云上 ACM ,可以省去服务端的维护工作,同时稳定性也会更有保障。当使用云上配置中心时,代码部分和使用轻量配置中心并没有区别,但是配置上会有一些区别。 -完成之后,重启测试程序,可以在控制台看到输出的结果的值。 +以下是一个简单的使用云上配置中心的配置示例,配置详情需要在 https://acm.console.aliyun.com[ACM控制台查询] -[source,subs="normal"] +[source,properties] ---- -2018-11-05 11:50:13.829 INFO 1674 --- [main] com.alibaba.demo.normal.ProviderApp : Started ProviderApp in 15.091 seconds (JVM running for 15.626) -user name :yaml-alibaba; age: 102 -2018-11-05 11:50:13.868 INFO 1674 --- [gPullingdefault] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@7f64acf5: startup date [Mon Nov 05 11:50:13 CST 2018]; root of context hierarchy +# 应用名会被作为从服务端获取配置 key 的关键词组成部分,因此是必选 +spring.application.name=ans-provider +# 端口配置自由配置即可 +server.port=18081 +# 以下就是配置中心的IP和端口配置 +spring.cloud.alicloud.acm.server-mode=EDAS +spring.cloud.alicloud.access-key=你的阿里云AK +spring.cloud.alicloud.secret-key=你的阿里云SK +spring.cloud.alicloud.acm.endpoint=acm.aliyun.com +spring.cloud.alicloud.acm.namespace=你的 ACM namespace,需要在 ACM 控制台查询 ---- -==== 支持配置的动态更新 +NOTE: EDAS 提供应用托管服务,如果你将应用托管到 EDAS,那么 EDAS 将会自动为你填充所有配置。 + +=== 在配置中心添加配置 -spring-cloud-starter-alicloud-acm 也支持配置的动态更新,如下所示,当变更user.name时,应用程序中能够获取到最新的值: +1. 启动好轻量版配置中心之后,在控制台中添加如下的配置。 [source,subs="normal"] ---- -user name :yaml-alibaba; age: 102 -user name :yaml-alibaba; age: 102 -2018-11-05 11:52:15.192 INFO 1707 --- [gPullingdefault] o.s.boot.SpringApplication : Started application in 0.162 seconds (JVM running for 26.869) -2018-11-05 11:52:15.193 INFO 1707 --- [gPullingdefault] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@36b222ff: startup date [Mon Nov 05 11:52:15 CST 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@5cfd2308 -2018-11-05 11:52:15.193 INFO 1707 --- [gPullingdefault] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@5cfd2308: startup date [Mon Nov 05 11:52:15 CST 2018]; root of context hierarchy -//感知到配置发生变更 -user name :yaml-alibaba-update; age: 1020 ----- - -==== 可支持profile粒度的配置 +Group: DEFAULT_GROOUP -spring-cloud-starter-alicloud 在加载配置的时候,不仅仅加载了以dataid为${spring.application.name}.${file-extension:properties}为前缀的基础配置,还加载了dataid为${spring.application.name}-${profile}.${file-extension:properties}的基础配置。在我们日常开发中如果遇到多套环境下的不同配置,我们可以打开Spring自带的配置功能,放置在application.properties 配置文件中。如下所示: +DataId: acm-config.properties -[sources,properties] ----- -spring.profiles.active=${deploy.env} -spring.application.name=acm-config -spring.cloud.nacos.config.file-extension=yaml #显示的声明使用的文件扩展名 +Content: user.name=james + user.age=18 ---- -其中 ${deploy.env}变量的值可以在启动应用时通过-Ddeploy.env=来动态指定。比如现在在轻量版配置中心上新增了一个dataid为:acm-config-develop.yaml的基础配置,如下所示: +NOTE: DataId 的格式为 `{prefix}. {file-extension}`,prefix 默认从配置 spring.application.name 中取值,file-extension 默认的值为 "properties"。 -[source,subs="normal"] ----- -Group: DEFAULT_GROUP +=== 启动应用验证 -DataId: acm-config-develop.yaml +启动这个Example,可以在控制台看到打印出的值正是我们在轻量版配置中心上预先配置的值。 -Content: deploy.env: develop +[source,subs="normal"] +---- +user name :james; age: 18 ---- -同时启动应用的时候通过-Ddeploy.env=develop 来指定当前spring.profiles.active的值。 - -NOTE: 特别关注下这里的DataId 的命名。因为DataId的命名规则为 ${spring.application.name}-${profile}.${file-extension:properties}。而案例中配置的值依次为 acm-config、develop、yaml,因此这里的DataId为 acm-config-develop.yaml。Group的配置目前只支持 DEFAULT_GROUP,注意在使用的过程中不要更改其他的值。 +=== 更改配置文件扩展名 -启动 Spring Boot 应用测试的代码如下: +spring-cloud-starter-alicloud-acm 中 DataId 默认的文件扩展名是 properties。除去 properties 格式之外,也支持 yaml 格式。 +支持通过 spring.cloud.nacos.config.file-extension 来配置文件的扩展名,yaml 格式可以配置成 `yaml` 或 `yml`。 -[source,java] ----- -@SpringBootApplication -public class ProviderApplication { +NOTE: 修改文件扩展名后,在配置中心中的 DataID 以及 Content 的格式都必须做相应的修改。 - public static void main(String[] args) { - ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApp.class, args); - - while (true) { - String userName = applicationContext.getEnvironment().getProperty("user.name"); - String userAge = applicationContext.getEnvironment().getProperty("user.age"); - //获取当前的部署环境 - String deployEnv = applicationContext.getEnvironment().getProperty("deploy.env"); - System.err.println("Deploy Env:"+deployEnv+"\n \t user name :" + userName + "; age: " + userAge); - TimeUnit.SECONDS.sleep(1); - } - } -} ----- +=== 支持配置的动态更新 -启动后,可见控制台的输出结果: +spring-cloud-starter-alicloud-acm 默认支持配置的动态更新,当您在配置中心修改配置的内容时,会触发 Spring 中的 Context Refresh 动作。 +带有 @RefreshScope 和 @ConfigurationProperties 注解的类会自动刷新。 -[source,subs="normal"] ----- -2018-11-05 14:06:25.898 INFO 1852 --- [main] com.alibaba.demo.normal.ProviderApp : Started ProviderApp in 14.947 seconds (JVM running for 15.471) -Deploy Env:develop - user name :yaml-alibaba-update; age: 1020 -2018-11-05 14:06:25.939 INFO 1852 --- [gPullingdefault] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@75d62d18: startup date [Mon Nov 05 14:06:25 CST 2018]; root of context hierarchy -2018-11-05 14:06:25.967 INFO 1852 --- [gPullingdefault] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring ----- +NOTE: 你可以通过配置 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新 -如果我们要切换到生产环境,那么只需要更改启动的-Ddeploy.env=product 参数即可。前提是生产环境 模式下轻量版配置中心已经添加了该环境的基础配置。例如dataid为:acm-config-product.yaml的配置: +=== profile 粒度的配置 -[source,subs="normal"] ----- -Group: DEFAULT_GROUP +spring-cloud-starter-alicloud-acm 在加载配置的时候,首先会尝试去加载 dataid 为{spring.application.name}.{file-extension}的配置,当设置了 spring.profiles.active 中配置有内容时,还会尝试依次去加载 spring.profile 对应的内容, dataid 的格式为{spring.application.name}-{profile}.{file-extension}的配置,且后者的优先级高于前者。 -DataId: acm-config-product.yaml +spring.profiles.active 属于配置的元数据,所以也必须配置在 bootstrap.properties 或 bootstrap.yaml 中。比如可以在 bootstrap.properties 中增加如下内容。 -Content: deploy.env: Product +[sources,properties] +---- +spring.profiles.active={profile-name} ---- -以-Ddeploy.env=product 启动测试程序,输出结果如下: +Note: 也可以通过 JVM 参数 -Dspring.profiles.active=develop 或者 --spring.profiles.active=develop 这类优先级更高的方式来配置,只需遵循 Spring Boot 规范即可。 -[source,subs="normal"] ----- -2018-11-05 14:10:05.481 INFO 1857 --- [gPullingdefault] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@455d34c2: startup date [Mon Nov 05 14:10:05 CST 2018]; root of context hierarchy -Deploy Env:Product - user name :yaml-alibaba-update; age: 1020 -2018-11-05 14:10:06.798 INFO 1857 --- [ Thread-20] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3899782c: startup date [Mon Nov 05 14:10:01 CST 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@245b4bdc ----- -==== 基于组级别配置的高级功能 -当你习惯使用application.properties 或者 application.yaml 来作为你的配置时,为了能够区分其他应用的配置,这个时候可以开启 spring-cloud-starter-alicloud-acm 提供的基于组级别的配置。即只需在bootstrap.properties配置文件中添加spring.application.group配置来标识应用所属的分组即可。如下所示: +=== 支持自定义 Group 的配置 + +在没有明确指定 `{spring.cloud.nacos.config.group}` 配置的情况下, 默认使用的是 DEFAULT_GROUP 。如果需要自定义自己的 Group,可以通过以下配置来实现: [source,properties] ---- -spring.application.group=com.infrastructure.alibaba +spring.cloud.nacos.config.group=DEVELOP_GROUP ---- -如下所示: +NOTE: 该配置必须放在 bootstrap.properties 文件中。并且在添加配置时 Group 的值一定要和 `spring.cloud.nacos.config.group` 的配置值一致。 -[source,subs="normal"] ----- -Group: DEFAULT_GROUP +==== 支持共享配置 -DataId: com.infrastructure.alibaba:application.yaml +ACM 提供了一种多个应用之间共享配置中心的同一个配置的推荐方式,供多个应用共享一些配置时使用,您在使用的时候需要添加在 bootstrap 中添加一个配置项 `spring.application.group`。 -Content: owner.group: infrastructure +[source,properties] ---- - -NOTE: 这个时候注意在轻量版配置中心填写的dataid的格式为:`${spring.application.group}:application.${file-extension}` 或者 - `${spring.application.group}:${spring.application.name}.${file-extension}` 。如果有 `spring.profiles.active` 的配置,dataid的格式还支持 - `${spring.application.group}:${spring.application.name}-${spring.profiles.active}.${file-extension}`。 Group 的值目前只支持 `DEFAULT_GROUP`,因此在使用过程中请额外注意该值配置的正确性,不要和 `spring.application.group` 这个配置搞混了。 - -启动 Spring Boot 应用测试的代码如下: - -[source,java] +spring.application.group=company.department.team ---- -@SpringBootApplication -public class ProviderApp { - public static void main(String[] args) throws Exception{ - ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApp.class, args); +这时你的应用在获取之前提到的自身所独有的配置之前,会先依次从这些 DataId 去获取,分别是 company:application.properties, company.department:application.properties, company.department.team:application.properties。 +然后,还会从 {spring.application.group}:{spring.application.name}.{file-extension} 中获取 +越往后优先级越高,最高的仍然是应用自身所独有的配置。 - while (true) { - String userName = applicationContext.getEnvironment().getProperty("user.name"); - String userAge = applicationContext.getEnvironment().getProperty("user.age"); - String deployEnv = applicationContext.getEnvironment().getProperty("deploy.env"); - //获取当前应用所属的组 - String ownerGroup = applicationContext.getEnvironment().getProperty("owner.group"); - System.err.println("Deploy Env:"+deployEnv+"; in group :"+ownerGroup+"\n \tuser name :" + userName + "; age: " + userAge); - TimeUnit.SECONDS.sleep(1); - } - } -} ----- - -测试输出的结果如下: +NOTE: 共享配置中 DataId 默认后缀为 properties,可以通过 spring.cloud.nacos.config.file-extension 配置. `{spring.application.group}:{spring.application.name}.{file-extension}` 。 -[source,subs="normal"] ----- -2018-11-05 14:34:28.059 INFO 1902 --- [main] com.alibaba.demo.normal.ProviderApp : Started ProviderApp in 15.431 seconds (JVM running for 16.008) -Deploy Env:product; in group :Infrastructure - user name :yaml-alibaba-update; age: 1020 -2018-11-05 14:34:28.109 INFO 1902 --- [gPullingdefault] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@4846b0aa: startup date [Mon Nov 05 14:34:28 CST 2018]; root of context hierarchy ----- +NOTE: 如果设置了 `spring.profiles.active` ,DataId 的格式还支持 `{spring.application.group}:{spring.application.name}-{spring.profiles.active}.{file-extension}`。优先级高于 `{spring.application.group}:{spring.application.name}.{file-extension}` From 48ba912ea6225b86905d9abb3ce2af1c26ca77fa Mon Sep 17 00:00:00 2001 From: xiaojing Date: Wed, 12 Dec 2018 22:13:30 +0800 Subject: [PATCH 06/24] update ans.doc --- .../src/main/asciidoc-zh/ans.adoc | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc index 63c839763..468244d81 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc @@ -1,10 +1,10 @@ == Spring Cloud AliCloud ANS -ANS(Application Naming Service) 是隶属于阿里云EDAS产品的组件, Spring Cloud AliCloud ANS 提供了Spring Cloud规范下商业版的服务注册与发现,可以让用户方便的在本地开发,同时也可以运行在云环境里。 +ANS(Application Naming Service) 是隶属于阿里云 EDAS 产品的组件, Spring Cloud AliCloud ANS 提供了 Spring Cloud 规范下商业版的服务注册与发现,可以让用户方便的在本地开发,同时也可以运行在云环境里。 === 如何引入 Spring Cloud AliCloud ANS -Spring Cloud Alibaba 已经发布了0.2.0版本,需要首先导入依赖管理POM。 +Spring Cloud Alibaba 已经发布了 0.2.0.RELEASE 版本,需要首先导入依赖管理 POM。 [source,xml] ---- @@ -56,23 +56,23 @@ public class ProviderApplication { } ---- -既然服务会被注册到注册中心,那么肯定需要配置注册中心的地址,在application.properties中,还需要配置上以下地址。 +既然服务会被注册到注册中心,那么肯定需要配置注册中心的地址,在 application.properties 中,还需要配置上以下地址。 [source,properties] ---- # 应用名会被作为服务名称使用,因此会必选 spring.application.name=ans-provider server.port=18081 -# 以下就是注册中心的IP和端口配置,因为默认就是127.0.0.1和8080,因此以下两行配置也可以省略 -spring.cloud.alicloud.ans.server.list=127.0.0.1 -spring.cloud.alicloud.ans.server.port=8080 +# 以下就是注册中心的IP和端口配置 +spring.cloud.alicloud.ans.server-list=127.0.0.1 +spring.cloud.alicloud.ans.server-port=8080 ---- NOTE: 此时没有启动注册中心,启动应用会报错,因此在应用启动之前,应当首先启动注册中心。 === 启动注册中心 -ANS使用的注册中心有两种,一种是完全免费的轻量版配置中心,主要用于开发和本地调试,一种是云上注册中心,ANS依托于阿里云EDAS产品提供服务注册的功能。通常情况下,可以使用轻量版配置中心作为开发和测试环境,使用云上的EDAS作为灰度和生产环境。 +ANS 使用的注册中心有两种,一种是完全免费的轻量版配置中心,主要用于开发和本地调试,一种是云上注册中心,ANS 依托于阿里云 EDAS 产品提供服务注册的功能。通常情况下,可以使用轻量版配置中心作为开发和测试环境,使用云上的 EDAS 作为灰度和生产环境。 ==== 启动轻量版配置中心 @@ -103,9 +103,9 @@ spring.cloud.alicloud.edas.namespace=cn-xxxxx server-mode 的默认值为 LOCAL ,如果要使用云上注册中心,则需要更改为 EDAS 。 -access-key 和 secret-key 则是阿里云账号的AK/SK,需要首先注册阿里云账号,然后登陆 https://usercenter.console.aliyun.com/#/manage/ak[阿里云AK/SK管理页面] ,即可看到 AccessKey ID 和 Access Key Secret ,如果没有的话,需要点击"创建AccessKey"按钮创建。 +access-key 和 secret-key 则是阿里云账号的 AK/SK,需要首先注册阿里云账号,然后登陆 https://usercenter.console.aliyun.com/#/manage/ak[阿里云AK/SK管理页面] ,即可看到 AccessKey ID 和 Access Key Secret ,如果没有的话,需要点击"创建 AccessKey"按钮创建。 -namespace 是阿里云EDAS产品的概念,用于隔离不同的环境,比如测试环境和生产环境。要获取 namespace 需要 https://common-buy.aliyun.com/?spm=5176.11451019.0.0.6f5965c0Uq5tue&commodityCode=edaspostpay#/buy[开通EDAS服务],按量计费模式下开通是免费的,开通以后进入 https://edas.console.aliyun.com/#/namespaces?regionNo=cn-hangzhou[EDAS控制台],即可看到对应的namespace,比如cn-hangzhou。 +namespace 是阿里云 EDAS 产品的概念,用于隔离不同的环境,比如测试环境和生产环境。要获取 namespace 需要 https://common-buy.aliyun.com/?spm=5176.11451019.0.0.6f5965c0Uq5tue&commodityCode=edaspostpay#/buy[开通 EDAS 服务],按量计费模式下开通是免费的,开通以后进入 https://edas.console.aliyun.com/#/namespaces?regionNo=cn-hangzhou[EDAS控制台],即可看到对应的 namespace,比如 cn-hangzhou。 -NOTE: EDAS提供应用托管服务,如果你将应用托管到EDAS,那么EDAS将会自动为你填充所有配置。 +NOTE: EDAS 提供应用托管服务,如果你将应用托管到 EDAS,那么 EDAS 将会自动为你填充所有配置。 From 73280b26417e7970f0b2211885a790dfe92cdac4 Mon Sep 17 00:00:00 2001 From: xiaojing Date: Wed, 12 Dec 2018 23:03:15 +0800 Subject: [PATCH 07/24] update scheduler.doc --- .../src/main/asciidoc-zh/schedulerx.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc index fbe1307c4..2ce7bca8c 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc @@ -87,7 +87,7 @@ public class SimpleTask implements ScxSimpleJobProcessor { === 对任务进行调度 -进入[SchedulerX任务列表](https://edas.console.aliyun.com/#/edasSchedulerXJob?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建Job",创建一个Job,即如下所示。 +进入 https://edas.console.aliyun.com/#/edasSchedulerXJob?regionNo=cn-test[SchedulerX任务列表] 页面,选择上方"测试"区域,点击右上角"新建Job",创建一个Job,即如下所示。 [source,text] ---- @@ -101,7 +101,7 @@ Job描述:无 以上任务类型选择了"简单Job单机版",并且制定了Cron表达式为"0 * * * * ?",这意味着,每过一分钟,任务将会被执行且只执行一次。 -更多任务类型,请参考 https://help.aliyun.com/document_detail/43136.html?spm=a2c4g.11186623.6.703.64e17da9br61ZS[SchedulerX官方文档]。 +更多任务类型,请参考 https://help.aliyun.com/document_detail/43136.html[SchedulerX官方文档]。 === 生产环境使用 @@ -128,4 +128,4 @@ NOTE: group-id必须创建在namespace当中。 access-key以及secret-key为阿里云账号的AK/SK信息,如果应用在EDAS上部署,则不需要填写这两项信息,否则请前往 https://usercenter.console.aliyun.com/#/manage/ak[安全信息管理]获取。 -domain-name并不是必须的,具体请参考 https://help.aliyun.com/document_detail/35359.html?spm=a2c4g.11186623.6.704.4abf1994SbgXYS[SchedulerX官方文档]。 \ No newline at end of file +domain-name并不是必须的,具体请参考 https://help.aliyun.com/document_detail/35359.html[SchedulerX官方文档]。 From 3dd00f62f76b0fd7c79a1f32d1c6654db2265e19 Mon Sep 17 00:00:00 2001 From: flystar32 Date: Wed, 12 Dec 2018 23:25:24 +0800 Subject: [PATCH 08/24] update reference doc contents --- .../src/main/asciidoc-zh/nacos-config.adoc | 10 ++++------ .../src/main/asciidoc-zh/nacos-discovery.adoc | 10 +++++----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc index debd5fad8..dbf8f1613 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc @@ -1,14 +1,12 @@ -= Spring Cloud Alibaba Nacos Config +== Spring Cloud Alibaba Nacos Config Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。 Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。 -== 快速开始 +=== 快速开始 -=== 基于 dataid 为 properties 的文件扩展名配置方式 - -==== Nacos 服务端初始化 +===== Nacos 服务端初始化 1、启动Nacos Server。启动方式可见 https://nacos.io/zh-cn/docs/quick-start.html[Nacos 官网] @@ -28,7 +26,7 @@ Group : DEFAULT_GROUP NOTE: 注意dataid是以 properties(默认的文件扩展名方式)为扩展名。 -==== 客户端使用方式 +===== 客户端使用方式 为了能够在应用程序中使用 Nacos 来实现应用的外部化配置,在构建应用的同时添加一个Spring Boot Starter org.springframework.cloud:spring-cloud-starter-alibaba-nacos-config。以下是一个基本的 maven 依赖配置: diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-discovery.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-discovery.adoc index 388e68f67..70899a8a2 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-discovery.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-discovery.adoc @@ -1,15 +1,15 @@ -= Spring Cloud Alibaba Nacos Discovery +== Spring Cloud Alibaba Nacos Discovery 该项目通过自动配置以及其他 Spring 编程模型的习惯用法为 Spring Boot 应用程序在服务注册与发现方面提供和 Nacos 的无缝集成。 通过一些简单的注解,您可以快速来注册一个服务,并使用经过双十一考验的 Nacos 组件来作为大规模分布式系统的服务注册中心。 -== 1. 服务注册发现: Nacos Discovery Starter +=== 服务注册发现: Nacos Discovery Starter 服务发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于 服务的动态扩缩容。Nacos Discovery Starter 可以帮助您将服务自动注册到 Nacos 服务端并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery Starter 也将服务实例自身的一些元数据信息-例如 host,port,健康检查URL,主页等-注册到 Nacos 。Nacos 的获取和启动方式可以参考 https://nacos.io/zh-cn/docs/quick-start.html[Nacos 官网]。 -=== 如何引入 Nacos Discovery Starter +==== 如何引入 Nacos Discovery Starter 为了能够在你的工程下引入 Nacos Discovey Starter,使用group ID 为 `org.springframework.cloud` 和 artifact ID 为 `spring-cloud-starter-alibaba-nacos-discovery`。 pom.xml 示例如下所示: @@ -38,7 +38,7 @@ pom.xml 示例如下所示: ---- -=== 启动一个 Provider 应用 +==== 启动一个 Provider 应用 如果您使用的 Spring Cloud 版本是 Finchley.SR1 版本,那么这个时候您的Spring Boot版本的选择可需要额外的小心了,因为版本的不匹对,可能会导致许多意外的效果。 Spring Cloud 的 Finchley.SR1 版本最佳实践的 Spring Boot 版本是 2.0.6.RELEASE。在启动您的一个 Provider 应用时请检查依赖的 Spring Boot 版本是否是 @@ -292,7 +292,7 @@ NOTE: 在启动 Consumer 应用之前请先将 Nacos 服务启动好。具体启 访问地址:http://127.0.0.1:8082/echo/app-name 访问结果:Hello Nacos Discovery nacos-consumer -== 2. 关于 Nacos Starter 更多的配置项信息 +=== 关于 Nacos Starter 更多的配置项信息 更多关于 spring-cloud-starter-alibaba-nacos-discovery 的 starter 配置项如下所示: From 679dcb6a8b61171261a13a37a227ff02de357066 Mon Sep 17 00:00:00 2001 From: flystar32 Date: Thu, 13 Dec 2018 10:24:33 +0800 Subject: [PATCH 09/24] update readme --- README-zh.md | 12 ++++++------ README.md | 8 ++++---- Roadmap-zh.md | 6 +++--- Roadmap.md | 8 ++++---- .../src/main/asciidoc-zh/acm.adoc | 2 +- .../src/main/asciidoc-zh/ans.adoc | 2 +- .../src/main/asciidoc-zh/oss.adoc | 2 +- .../src/main/asciidoc-zh/schedulerx.adoc | 2 +- .../src/main/asciidoc-zh/spring-cloud-alibaba.adoc | 2 +- spring-cloud-alibaba-docs/src/main/asciidoc/acm.adoc | 2 +- spring-cloud-alibaba-docs/src/main/asciidoc/ans.adoc | 2 +- spring-cloud-alibaba-docs/src/main/asciidoc/oss.adoc | 2 +- 12 files changed, 25 insertions(+), 25 deletions(-) diff --git a/README-zh.md b/README-zh.md index 52ef02144..219a9e515 100644 --- a/README-zh.md +++ b/README-zh.md @@ -25,9 +25,9 @@ Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。 **[RocketMQ](https://rocketmq.apache.org/)**:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 -**[AliCloud ACM](https://www.aliyun.com/product/acm)**:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。 +**[Alibaba Cloud ACM](https://www.aliyun.com/product/acm)**:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。 -**[AliCloud OSS](https://www.aliyun.com/product/oss)**: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 +**[Alibaba Cloud OSS](https://www.aliyun.com/product/oss)**: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 更多组件请参考 [Roadmap](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/Roadmap-zh.md)。 @@ -90,11 +90,11 @@ Example 列表: [RocketMQ Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/rocketmq-example/readme-zh.md) -[AliCloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/oss-example/readme-zh.md) +[Alibaba Cloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/oss-example/readme-zh.md) -[AliCloud ANS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/ans-example/ans-provider-example/readme-zh.md) +[Alibaba Cloud ANS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/ans-example/ans-provider-example/readme-zh.md) -[AliCloud ACM Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/acm-example/acm-local-example/readme-zh.md) +[Alibaba Cloud ACM Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/acm-example/acm-local-example/readme-zh.md) ## 版本管理规范 项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从0开始取值,且不限于 0~9 这个范围。项目处于孵化器阶段时,第一位版本号固定使用0,即版本号为 0.x.x 的格式。 @@ -116,4 +116,4 @@ spring-cloud-alibaba@googlegroups.com,欢迎通过此邮件列表讨论与 spr ### 钉钉群 -![DingQR](https://cdn.nlark.com/lark/0/2018/png/64647/1535108150178-409a1689-437f-495b-8dcb-b667ccb32f85.png) +![DingQR](https://cdn.nlark.com/lark/0/2018/png/54319/1544667717958-b3022f21-3357-4270-836d-4064e7ac728c.png) diff --git a/README.md b/README.md index 8317707d4..a4e58ab8d 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ With Spring Cloud Alibaba, you only need to add some annotations and a small amo * **Service registration and discovery**:Service can be registered and clients can discover the instances using Spring-managed beans, auto integration Ribbon. * **Distributed configuration**:support for externalized configuration in a distributed system, auto refresh when configuration changes. * **Event-driven**:support for building highly scalable event-driven microservices connected with shared messaging systems. -* **AliCloud Object Storage**:massive, secure, low-cost, and highly reliable cloud storage services. Support for storing and accessing any type of data in any application, anytime, anywhere. +* **Alibaba Cloud Object Storage**:massive, secure, low-cost, and highly reliable cloud storage services. Support for storing and accessing any type of data in any application, anytime, anywhere. For more features, please refer to [Roadmap](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/Roadmap.md). ## Components @@ -26,9 +26,9 @@ For more features, please refer to [Roadmap](https://github.com/spring-cloud-inc **[RocketMQ](https://rocketmq.apache.org/)**:a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability. -**[AliCloud ACM](https://www.aliyun.com/product/acm)**:an application configuration center that enables you to centralize the management of application configurations, and accomplish real-time configuration push in a distributed environment. +**[Alibaba Cloud ACM](https://www.aliyun.com/product/acm)**:an application configuration center that enables you to centralize the management of application configurations, and accomplish real-time configuration push in a distributed environment. -**[AliCloud OSS](https://www.aliyun.com/product/oss)**: An encrypted and secure cloud storage service which stores, processes and accesses massive amounts of data from anywhere in the world. +**[Alibaba Cloud OSS](https://www.aliyun.com/product/oss)**: An encrypted and secure cloud storage service which stores, processes and accesses massive amounts of data from anywhere in the world. For more features please refer to [Roadmap](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/Roadmap.md). @@ -102,7 +102,7 @@ Examples: [RocketMQ Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/rocketmq-example/readme.md) -[AliCloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/oss-example/readme.md) +[Alibaba Cloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/oss-example/readme.md) ## Version control guidelines The version number of the project is in the form of x.x.x, where x is a number, starting from 0, and is not limited to the range 0~9. When the project is in the incubator phase, the first version number is fixed to 0, that is, the version number is 0.x.x. diff --git a/Roadmap-zh.md b/Roadmap-zh.md index 2fc244481..c28fe972f 100644 --- a/Roadmap-zh.md +++ b/Roadmap-zh.md @@ -15,7 +15,7 @@ Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解 **Nacos** 阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 -**AliCloud OSS** +**Alibaba Cloud OSS** 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 ## 即将加入的组件 @@ -25,8 +25,8 @@ Apache Dubbo™ (incubating) 是一款高性能Java RPC框架。 **RocketMQ** Apache RocketMQ™ 基于Java的高性能、高吞吐量的分布式消息和流计算平台。 -**Schedulerx** +**Alibaba Cloud Schedulerx** 阿里中间件团队开发的一款分布式任务调度产品,支持周期性的任务与固定时间点触发任务。 -**AliCloud SLS** +**Alibaba Cloud SLS** 针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成。您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立 DT 时代海量日志处理能力。 \ No newline at end of file diff --git a/Roadmap.md b/Roadmap.md index 4bcf2943e..7b392f2a4 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -20,9 +20,9 @@ An open-source project of Alibaba, Sentinel takes "flow" as breakthrough point, An opensource project of Alibaba, an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. -**AliCloud OSS** +**Alibaba Cloud OSS** -AliCloud Object Storage Service, An encrypted and secure cloud storage service which stores, processes and accesses massive amounts of data from anywhere in the world. +Alibaba Cloud Object Storage Service, An encrypted and secure cloud storage service which stores, processes and accesses massive amounts of data from anywhere in the world. More components will be supported by Spring Cloud Alibaba in the future, which may include but are not limited to the following: @@ -32,8 +32,8 @@ Apache Dubbo™ (incubating) is a high-performance, Java based open source RPC f **RocketMQ** Apache RocketMQ™ is an open source distributed messaging and streaming data platform. -**Schedulerx** +**Alibaba Cloud Schedulerx** A distributed task scheduling product developed by Alibaba Middleware team. It supports both periodical tasks and tasks to be triggered at specified time points. -**AliCloud SLS** +**Alibaba Cloud SLS** Aliyun Log Service is an all-in-one service for log-type data. It helps increase Operations & Management and operational efficiency, as well as build the processing capability to deal with massive logs. \ No newline at end of file diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc index b6912de10..d1d1bea46 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/acm.adoc @@ -1,4 +1,4 @@ -== Spring Cloud AliCloud ACM +== Spring Cloud Alibaba Cloud ACM Spring Cloud AliCloud ACM 是阿里云提供的商业版应用配置管理(Application Configuration Management) 产品 在 Spring Cloud 应用侧的客户端实现,且目前完全免费。 diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc index 468244d81..206381418 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/ans.adoc @@ -1,4 +1,4 @@ -== Spring Cloud AliCloud ANS +== Spring Cloud Alibaba Cloud ANS ANS(Application Naming Service) 是隶属于阿里云 EDAS 产品的组件, Spring Cloud AliCloud ANS 提供了 Spring Cloud 规范下商业版的服务注册与发现,可以让用户方便的在本地开发,同时也可以运行在云环境里。 diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/oss.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/oss.adoc index 778a8560c..40317202a 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/oss.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/oss.adoc @@ -1,4 +1,4 @@ -== Spring Cloud AliCloud OSS +== Spring Cloud Alibaba Cloud OSS OSS(Object Storage Service)是阿里云的一款对象存储服务产品, Spring Cloud AliCloud OSS 提供了Spring Cloud规范下商业版的对象存储服务,提供简单易用的API,并且支持与 Spring 框架中 Resource 的整合。 diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc index 2ce7bca8c..19feed221 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/schedulerx.adoc @@ -1,4 +1,4 @@ -== Spring Cloud AliCloud SchedulerX +== Spring Cloud Alibaba Cloud SchedulerX SchedulerX(分布式任务调度) 是隶属于阿里云EDAS产品的组件, Spring Cloud AliCloud SchedulerX 提供了在Spring Cloud的配置规范下,分布式任务调度的功能支持。SchedulerX可提供秒级、精准、高可靠、高可用的定时任务调度服务,并支持多种类型的任务调度,如简单单机任务、简单多机任务、脚本任务以及网格任务。 diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc index c831c366d..400d8a7af 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/spring-cloud-alibaba.adoc @@ -1,6 +1,6 @@ [[spring-cloud-alibaba-reference]] = Spring Cloud Alibaba 参考文档 -xiaojing; xiaolongzuo; jim fang; bingting peng +xiaojing; xiaolongzuo; jim fang; bingting peng; wangyuxin :doctype: book :toc: :toclevels: 4 diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc/acm.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc/acm.adoc index 488baab69..acd5795c5 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc/acm.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc/acm.adoc @@ -1 +1 @@ -== Spring Cloud AliCloud ACM +== Spring Cloud Alibaba Cloud ACM diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc/ans.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc/ans.adoc index b9b34ce24..7f5c95a03 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc/ans.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc/ans.adoc @@ -1 +1 @@ -== Spring Cloud AliCloud ANS +== Spring Cloud Alibaba Cloud ANS diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc/oss.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc/oss.adoc index 20b43f75f..f9a28c12d 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc/oss.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc/oss.adoc @@ -1 +1 @@ -== Spring Cloud AliCloud OSS +== Spring Cloud Alibaba Cloud OSS From 96856af7a1c0d71e2e161f4e7c8bf69a1c41da02 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 14:29:48 +0800 Subject: [PATCH 10/24] Fix schedulerx version error. --- spring-cloud-alibaba-dependencies/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 58578cf22..9786baf56 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -26,7 +26,7 @@ 1.0.1 2.16.0 4.3.1 - 2.3.1-SNAPSHOT + 2.1.5 From 2bcdbb0eb5b7fa23b7ccd5f640d2570ed82cd1b7 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 14:39:56 +0800 Subject: [PATCH 11/24] Fix schedulerx version error. --- spring-cloud-alibaba-dependencies/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 9786baf56..6dd43053b 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -65,8 +65,8 @@ ${acm.version} - com.alibaba.schedulerx - schedulerx-client + com.alibaba.edas + schedulerX-client ${schedulerX.version} From 2e0f7370918f72a23971717778ddcd9de0ceca56 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 14:45:51 +0800 Subject: [PATCH 12/24] Fix schedulerx GroupId and ArtifactId error. --- spring-cloud-alicloud-context/pom.xml | 4 ++-- spring-cloud-alicloud-schedulerX/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-cloud-alicloud-context/pom.xml b/spring-cloud-alicloud-context/pom.xml index 64681afee..878c90f3e 100644 --- a/spring-cloud-alicloud-context/pom.xml +++ b/spring-cloud-alicloud-context/pom.xml @@ -39,8 +39,8 @@ - com.alibaba.schedulerx - schedulerx-client + com.alibaba.edas + schedulerX-client provided diff --git a/spring-cloud-alicloud-schedulerX/pom.xml b/spring-cloud-alicloud-schedulerX/pom.xml index 2bf62ddfa..ac7bc2a14 100644 --- a/spring-cloud-alicloud-schedulerX/pom.xml +++ b/spring-cloud-alicloud-schedulerX/pom.xml @@ -17,8 +17,8 @@ spring-cloud-alicloud-context - com.alibaba.schedulerx - schedulerx-client + com.alibaba.edas + schedulerX-client com.aliyun From 9708503b8e76e13cb8dba9fa012953b0cd980b9f Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 14:52:27 +0800 Subject: [PATCH 13/24] Delete SchedulerX modules. --- pom.xml | 1 - spring-cloud-alibaba-examples/pom.xml | 1 - .../schedulerX-simple-task-example/pom.xml | 37 --------------- .../readme-zh.md | 47 ------------------- .../cloud/examples/ScxApplication.java | 32 ------------- .../alibaba/cloud/examples/SimpleTask.java | 35 -------------- .../src/main/resources/application.properties | 3 -- spring-cloud-alicloud-schedulerX/pom.xml | 33 ------------- .../alicloud/scx/ScxAutoConfiguration.java | 29 ------------ .../main/resources/META-INF/spring.factories | 2 - spring-cloud-starter-alicloud/pom.xml | 1 - .../pom.xml | 20 -------- 12 files changed, 241 deletions(-) delete mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml delete mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md delete mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java delete mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java delete mode 100644 spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties delete mode 100644 spring-cloud-alicloud-schedulerX/pom.xml delete mode 100644 spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java delete mode 100644 spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories delete mode 100644 spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml diff --git a/pom.xml b/pom.xml index 68db75410..b0532ec39 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,6 @@ spring-cloud-alicloud-oss spring-cloud-alicloud-acm spring-cloud-alicloud-ans - spring-cloud-alicloud-schedulerX diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index d69279e49..7d6b3b263 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -30,7 +30,6 @@ acm-example/acm-local-example rocketmq-example spring-cloud-bus-rocketmq-example - schedulerX-example/schedulerX-simple-task-example diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml deleted file mode 100644 index 2115553c8..000000000 --- a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/pom.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - spring-cloud-alibaba-examples - org.springframework.cloud - 0.2.1.BUILD-SNAPSHOT - ../../pom.xml - - 4.0.0 - schedulerX-simple-task-example - - - - org.springframework.cloud - spring-cloud-starter-alicloud-schedulerX - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-actuator - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md deleted file mode 100644 index 9e9b6f02b..000000000 --- a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/readme-zh.md +++ /dev/null @@ -1,47 +0,0 @@ -# SchedulerX Simple Task Example - -## 项目说明 - -本项目展示了,在Spring Cloud体系中,如何快如接入SchedulerX,使用任务调度服务。 - -SchedulerX 是阿里中间件团队开发的一款分布式任务调度产品。它为您提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。 - -## 示例 - -### 准备工作 - -1. 请先[注册阿里云账号](https://account.aliyun.com/register/register.htm?spm=5176.8142029.388261.26.e9396d3eEIv28g&oauth_callback=https%3A%2F%2Fwww.aliyun.com%2F) - -2. SchedulerX集成到了EDAS组件中心,因此需要[开通EDAS服务](https://common-buy.aliyun.com/?spm=5176.11451019.0.0.6f5965c0Uq5tue&commodityCode=edaspostpay#/buy) - -3. 到[EDAS组件中心](https://edas.console.aliyun.com/#/edasTools)开通SchedulerX组件,即分布式任务管理。 - -4. 进入[SchedulerX分组管理](https://edas.console.aliyun.com/#/schedulerXGroup?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建分组",创建一个分组。 - -5. 将"分组ID"的值填写到`application.properties`文件中`key`为`spring.cloud.alicloud.scx.group-id`对应的value值,即如下所示。 - - spring.cloud.alicloud.scx.group-id=111-1-1-1111 - -6. 进入[SchedulerX任务列表](https://edas.console.aliyun.com/#/edasSchedulerXJob?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建Job",创建一个Job,即如下所示。 - - Job分组:测试——111-1-1-1111 - Job处理接口:org.springframework.cloud.alibaba.cloud.examples.SimpleTask - 类型:简单Job单机版 - 定时表达式:默认选项——0 * * * * ? - Job描述:无 - 自定义参数:无 - -### 启动应用 - -直接运行main class,即`ScxApplication`。 - -### 查看效果 - -观察应用的控制台日志输出,可以看到每一分钟会打印一次如下日志。 - -``` - -----------Hello world--------------- -``` - -如果您对 Spring Cloud SchedulerX Starter 有任何建议或想法,欢迎提交 issue 中或者通过其他社区渠道向我们反馈。 - diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java deleted file mode 100644 index baccfd4f0..000000000 --- a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.alibaba.cloud.examples; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * @author xiaolongzuo - */ -@SpringBootApplication -public class ScxApplication { - - public static void main(String[] args) { - SpringApplication.run(ScxApplication.class, args); - } - -} diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java deleted file mode 100644 index e49c0a052..000000000 --- a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.alibaba.cloud.examples; - -import com.alibaba.edas.schedulerx.ProcessResult; -import com.alibaba.edas.schedulerx.ScxSimpleJobContext; -import com.alibaba.edas.schedulerx.ScxSimpleJobProcessor; - -/** - * @author xiaolongzuo - */ -public class SimpleTask implements ScxSimpleJobProcessor { - - @Override - public ProcessResult process(ScxSimpleJobContext context) { - System.out.println("-----------Hello world---------------"); - ProcessResult processResult = new ProcessResult(true); - return processResult; - } - -} diff --git a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties deleted file mode 100644 index a995fa3fa..000000000 --- a/spring-cloud-alibaba-examples/schedulerX-example/schedulerX-simple-task-example/src/main/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -server.port=18033 -spring.cloud.alicloud.scx.group-id=*** -spring.cloud.alicloud.edas.namespace=cn-test diff --git a/spring-cloud-alicloud-schedulerX/pom.xml b/spring-cloud-alicloud-schedulerX/pom.xml deleted file mode 100644 index ac7bc2a14..000000000 --- a/spring-cloud-alicloud-schedulerX/pom.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - spring-cloud-alibaba - org.springframework.cloud - 0.2.1.BUILD-SNAPSHOT - - 4.0.0 - - spring-cloud-alicloud-schedulerX - - - - org.springframework.cloud - spring-cloud-alicloud-context - - - com.alibaba.edas - schedulerX-client - - - com.aliyun - aliyun-java-sdk-core - - - com.aliyun - aliyun-java-sdk-edas - - - - \ No newline at end of file diff --git a/spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java b/spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java deleted file mode 100644 index 77669f505..000000000 --- a/spring-cloud-alicloud-schedulerX/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.alicloud.scx; - -import org.springframework.context.annotation.Configuration; - -/** - * placeholder configuration - * - * @author xiaolongzuo - */ -@Configuration -public class ScxAutoConfiguration { - -} diff --git a/spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories deleted file mode 100644 index c0fc2249f..000000000 --- a/spring-cloud-alicloud-schedulerX/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - org.springframework.cloud.alicloud.scx.ScxAutoConfiguration \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/pom.xml b/spring-cloud-starter-alicloud/pom.xml index ec6276041..eb2ae1aa9 100644 --- a/spring-cloud-starter-alicloud/pom.xml +++ b/spring-cloud-starter-alicloud/pom.xml @@ -14,6 +14,5 @@ spring-cloud-starter-alicloud-oss spring-cloud-starter-alicloud-acm spring-cloud-starter-alicloud-ans - spring-cloud-starter-alicloud-schedulerX \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml deleted file mode 100644 index a7ada6507..000000000 --- a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerX/pom.xml +++ /dev/null @@ -1,20 +0,0 @@ - - 4.0.0 - - - org.springframework.cloud - spring-cloud-starter-alicloud - 0.2.1.BUILD-SNAPSHOT - - spring-cloud-starter-alicloud-schedulerX - Spring Cloud Starter Alibaba Cloud OSS - - - - org.springframework.cloud - spring-cloud-alicloud-schedulerX - - - - From f1bd3fd2c288347ca070a05ebb39c9cce23dcfb8 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 15:04:00 +0800 Subject: [PATCH 14/24] Add SchedulerX modules. --- pom.xml | 1 + spring-cloud-alibaba-dependencies/pom.xml | 8 ++-- spring-cloud-alibaba-examples/pom.xml | 1 + .../schedulerx-simple-task-example/pom.xml | 37 +++++++++++++++ .../readme-zh.md | 47 +++++++++++++++++++ .../cloud/examples/ScxApplication.java | 32 +++++++++++++ .../alibaba/cloud/examples/SimpleTask.java | 35 ++++++++++++++ .../src/main/resources/application.properties | 3 ++ spring-cloud-alicloud-schedulerx/pom.xml | 33 +++++++++++++ .../alicloud/scx/ScxAutoConfiguration.java | 29 ++++++++++++ .../main/resources/META-INF/spring.factories | 2 + spring-cloud-starter-alicloud/pom.xml | 1 + .../pom.xml | 20 ++++++++ 13 files changed, 245 insertions(+), 4 deletions(-) create mode 100644 spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/pom.xml create mode 100644 spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/readme-zh.md create mode 100644 spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java create mode 100644 spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java create mode 100644 spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/resources/application.properties create mode 100644 spring-cloud-alicloud-schedulerx/pom.xml create mode 100644 spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java create mode 100644 spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories create mode 100644 spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerx/pom.xml diff --git a/pom.xml b/pom.xml index b0532ec39..aa9673924 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,7 @@ spring-cloud-alicloud-oss spring-cloud-alicloud-acm spring-cloud-alicloud-ans + spring-cloud-alicloud-schedulerx diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 6dd43053b..1a7c9acd3 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -26,7 +26,7 @@ 1.0.1 2.16.0 4.3.1 - 2.1.5 + 2.1.5 @@ -67,7 +67,7 @@ com.alibaba.edas schedulerX-client - ${schedulerX.version} + ${schedulerX.client.version} @@ -199,7 +199,7 @@ org.springframework.cloud - spring-cloud-alicloud-schedulerX + spring-cloud-alicloud-schedulerx ${project.version} @@ -256,7 +256,7 @@ org.springframework.cloud - spring-cloud-starter-alicloud-schedulerX + spring-cloud-starter-alicloud-schedulerx ${project.version} diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index 7d6b3b263..3e7e222f6 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -30,6 +30,7 @@ acm-example/acm-local-example rocketmq-example spring-cloud-bus-rocketmq-example + schedulerx-example/schedulerx-simple-task-example diff --git a/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/pom.xml b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/pom.xml new file mode 100644 index 000000000..9808e6169 --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/pom.xml @@ -0,0 +1,37 @@ + + + + spring-cloud-alibaba-examples + org.springframework.cloud + 0.2.1.BUILD-SNAPSHOT + ../../pom.xml + + 4.0.0 + schedulerx-simple-task-example + + + + org.springframework.cloud + spring-cloud-starter-alicloud-schedulerx + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/readme-zh.md b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/readme-zh.md new file mode 100644 index 000000000..9e9b6f02b --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/readme-zh.md @@ -0,0 +1,47 @@ +# SchedulerX Simple Task Example + +## 项目说明 + +本项目展示了,在Spring Cloud体系中,如何快如接入SchedulerX,使用任务调度服务。 + +SchedulerX 是阿里中间件团队开发的一款分布式任务调度产品。它为您提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。 + +## 示例 + +### 准备工作 + +1. 请先[注册阿里云账号](https://account.aliyun.com/register/register.htm?spm=5176.8142029.388261.26.e9396d3eEIv28g&oauth_callback=https%3A%2F%2Fwww.aliyun.com%2F) + +2. SchedulerX集成到了EDAS组件中心,因此需要[开通EDAS服务](https://common-buy.aliyun.com/?spm=5176.11451019.0.0.6f5965c0Uq5tue&commodityCode=edaspostpay#/buy) + +3. 到[EDAS组件中心](https://edas.console.aliyun.com/#/edasTools)开通SchedulerX组件,即分布式任务管理。 + +4. 进入[SchedulerX分组管理](https://edas.console.aliyun.com/#/schedulerXGroup?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建分组",创建一个分组。 + +5. 将"分组ID"的值填写到`application.properties`文件中`key`为`spring.cloud.alicloud.scx.group-id`对应的value值,即如下所示。 + + spring.cloud.alicloud.scx.group-id=111-1-1-1111 + +6. 进入[SchedulerX任务列表](https://edas.console.aliyun.com/#/edasSchedulerXJob?regionNo=cn-test)页面,选择上方"测试"区域,点击右上角"新建Job",创建一个Job,即如下所示。 + + Job分组:测试——111-1-1-1111 + Job处理接口:org.springframework.cloud.alibaba.cloud.examples.SimpleTask + 类型:简单Job单机版 + 定时表达式:默认选项——0 * * * * ? + Job描述:无 + 自定义参数:无 + +### 启动应用 + +直接运行main class,即`ScxApplication`。 + +### 查看效果 + +观察应用的控制台日志输出,可以看到每一分钟会打印一次如下日志。 + +``` + -----------Hello world--------------- +``` + +如果您对 Spring Cloud SchedulerX Starter 有任何建议或想法,欢迎提交 issue 中或者通过其他社区渠道向我们反馈。 + diff --git a/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java new file mode 100644 index 000000000..baccfd4f0 --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ScxApplication.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alibaba.cloud.examples; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author xiaolongzuo + */ +@SpringBootApplication +public class ScxApplication { + + public static void main(String[] args) { + SpringApplication.run(ScxApplication.class, args); + } + +} diff --git a/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java new file mode 100644 index 000000000..e49c0a052 --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/SimpleTask.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alibaba.cloud.examples; + +import com.alibaba.edas.schedulerx.ProcessResult; +import com.alibaba.edas.schedulerx.ScxSimpleJobContext; +import com.alibaba.edas.schedulerx.ScxSimpleJobProcessor; + +/** + * @author xiaolongzuo + */ +public class SimpleTask implements ScxSimpleJobProcessor { + + @Override + public ProcessResult process(ScxSimpleJobContext context) { + System.out.println("-----------Hello world---------------"); + ProcessResult processResult = new ProcessResult(true); + return processResult; + } + +} diff --git a/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/resources/application.properties new file mode 100644 index 000000000..a995fa3fa --- /dev/null +++ b/spring-cloud-alibaba-examples/schedulerx-example/schedulerx-simple-task-example/src/main/resources/application.properties @@ -0,0 +1,3 @@ +server.port=18033 +spring.cloud.alicloud.scx.group-id=*** +spring.cloud.alicloud.edas.namespace=cn-test diff --git a/spring-cloud-alicloud-schedulerx/pom.xml b/spring-cloud-alicloud-schedulerx/pom.xml new file mode 100644 index 000000000..ce6ff07dc --- /dev/null +++ b/spring-cloud-alicloud-schedulerx/pom.xml @@ -0,0 +1,33 @@ + + + + spring-cloud-alibaba + org.springframework.cloud + 0.2.1.BUILD-SNAPSHOT + + 4.0.0 + spring-cloud-alicloud-schedulerx + Spring Cloud Alibaba Cloud SchedulerX + + + + org.springframework.cloud + spring-cloud-alicloud-context + + + com.alibaba.edas + schedulerX-client + + + com.aliyun + aliyun-java-sdk-core + + + com.aliyun + aliyun-java-sdk-edas + + + + \ No newline at end of file diff --git a/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java new file mode 100644 index 000000000..77669f505 --- /dev/null +++ b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/ScxAutoConfiguration.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.scx; + +import org.springframework.context.annotation.Configuration; + +/** + * placeholder configuration + * + * @author xiaolongzuo + */ +@Configuration +public class ScxAutoConfiguration { + +} diff --git a/spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories new file mode 100644 index 000000000..c0fc2249f --- /dev/null +++ b/spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + org.springframework.cloud.alicloud.scx.ScxAutoConfiguration \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/pom.xml b/spring-cloud-starter-alicloud/pom.xml index eb2ae1aa9..034c9602d 100644 --- a/spring-cloud-starter-alicloud/pom.xml +++ b/spring-cloud-starter-alicloud/pom.xml @@ -14,5 +14,6 @@ spring-cloud-starter-alicloud-oss spring-cloud-starter-alicloud-acm spring-cloud-starter-alicloud-ans + spring-cloud-starter-alicloud-schedulerx \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerx/pom.xml b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerx/pom.xml new file mode 100644 index 000000000..b7145c5bd --- /dev/null +++ b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-schedulerx/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + + + org.springframework.cloud + spring-cloud-starter-alicloud + 0.2.1.BUILD-SNAPSHOT + + spring-cloud-starter-alicloud-schedulerx + Spring Cloud Starter Alibaba Cloud SchedulerX + + + + org.springframework.cloud + spring-cloud-alicloud-schedulerx + + + + From 120cb4f096ae8e64880ff17d825e00cc6519f98c Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 16:50:33 +0800 Subject: [PATCH 15/24] Fix compile error. --- spring-cloud-alibaba-dependencies/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 1a7c9acd3..ea1b63631 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -23,7 +23,7 @@ 1.0.8 0.1.1 4.0.1 - 1.0.1 + 1.0.2 2.16.0 4.3.1 2.1.5 From 4fbc01405a0a9edab28792abc402220da99a14b5 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 20:38:42 +0800 Subject: [PATCH 16/24] Fix compile error. --- spring-cloud-alibaba-dependencies/pom.xml | 15 ++++++++++++++- spring-cloud-alicloud-context/pom.xml | 6 ++++++ spring-cloud-alicloud-schedulerx/pom.xml | 6 ++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index ea1b63631..7de49f108 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -26,9 +26,16 @@ 1.0.2 2.16.0 4.3.1 - 2.1.5 + 2.1.6-SNAPSHOT + + + Sonatype repository + https://oss.sonatype.org/content/repositories/snapshots/ + + + @@ -68,6 +75,12 @@ com.alibaba.edas schedulerX-client ${schedulerX.client.version} + + + com.taobao.middleware + logger.api + + diff --git a/spring-cloud-alicloud-context/pom.xml b/spring-cloud-alicloud-context/pom.xml index 878c90f3e..6b8398439 100644 --- a/spring-cloud-alicloud-context/pom.xml +++ b/spring-cloud-alicloud-context/pom.xml @@ -42,6 +42,12 @@ com.alibaba.edas schedulerX-client provided + + + com.taobao.middleware + logger.api + + diff --git a/spring-cloud-alicloud-schedulerx/pom.xml b/spring-cloud-alicloud-schedulerx/pom.xml index ce6ff07dc..a16d9ffc4 100644 --- a/spring-cloud-alicloud-schedulerx/pom.xml +++ b/spring-cloud-alicloud-schedulerx/pom.xml @@ -19,6 +19,12 @@ com.alibaba.edas schedulerX-client + + + com.taobao.middleware + logger.api + + com.aliyun From 7cf8fcefc027da5530252d55a11e53a91c7222c0 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 20:45:20 +0800 Subject: [PATCH 17/24] Add Sonatype Repository. --- spring-cloud-alibaba-dependencies/pom.xml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 7de49f108..a7642c7a5 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -31,7 +31,8 @@ - Sonatype repository + sonatype-repository + Sonatype repository https://oss.sonatype.org/content/repositories/snapshots/ @@ -294,6 +295,17 @@ spring + + sonatype-repository + Sonatype repository + https://oss.sonatype.org/content/repositories/snapshots/ + + true + + + false + + spring-snapshots Spring Snapshots From a4e4192d33d63abb3a198d14b43f5ea592d47534 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 20:52:24 +0800 Subject: [PATCH 18/24] Force update Sonatype Repository snapshots. --- spring-cloud-alibaba-dependencies/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index a7642c7a5..faa810d99 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -301,6 +301,7 @@ https://oss.sonatype.org/content/repositories/snapshots/ true + always false From 4bf7c9c7c4eaea2eb77281fefb809a7869eda40c Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 21:22:06 +0800 Subject: [PATCH 19/24] Add Sonatype Repository to AliCloud Context. --- spring-cloud-alibaba-dependencies/pom.xml | 26 ----------------------- spring-cloud-alicloud-context/pom.xml | 13 ++++++------ spring-cloud-alicloud-schedulerx/pom.xml | 6 ------ 3 files changed, 7 insertions(+), 38 deletions(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index faa810d99..145f42e17 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -29,14 +29,6 @@ 2.1.6-SNAPSHOT - - - sonatype-repository - Sonatype repository - https://oss.sonatype.org/content/repositories/snapshots/ - - - @@ -76,12 +68,6 @@ com.alibaba.edas schedulerX-client ${schedulerX.client.version} - - - com.taobao.middleware - logger.api - - @@ -295,18 +281,6 @@ spring - - sonatype-repository - Sonatype repository - https://oss.sonatype.org/content/repositories/snapshots/ - - true - always - - - false - - spring-snapshots Spring Snapshots diff --git a/spring-cloud-alicloud-context/pom.xml b/spring-cloud-alicloud-context/pom.xml index 6b8398439..32ca8f7fc 100644 --- a/spring-cloud-alicloud-context/pom.xml +++ b/spring-cloud-alicloud-context/pom.xml @@ -13,6 +13,13 @@ spring-cloud-alicloud-context Spring Cloud AliCloud Context + + + sonatype-repository + https://oss.sonatype.org/content/repositories/snapshots/ + + + @@ -42,12 +49,6 @@ com.alibaba.edas schedulerX-client provided - - - com.taobao.middleware - logger.api - - diff --git a/spring-cloud-alicloud-schedulerx/pom.xml b/spring-cloud-alicloud-schedulerx/pom.xml index a16d9ffc4..ce6ff07dc 100644 --- a/spring-cloud-alicloud-schedulerx/pom.xml +++ b/spring-cloud-alicloud-schedulerx/pom.xml @@ -19,12 +19,6 @@ com.alibaba.edas schedulerX-client - - - com.taobao.middleware - logger.api - - com.aliyun From 772fdf707f8e770fd20e06e546777a5022cf8e6e Mon Sep 17 00:00:00 2001 From: flystar32 Date: Fri, 14 Dec 2018 01:13:50 +0800 Subject: [PATCH 20/24] update schedulerx version --- spring-cloud-alibaba-dependencies/pom.xml | 2 +- spring-cloud-alicloud-context/pom.xml | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 145f42e17..2c7fc5738 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -26,7 +26,7 @@ 1.0.2 2.16.0 4.3.1 - 2.1.6-SNAPSHOT + 2.1.6 diff --git a/spring-cloud-alicloud-context/pom.xml b/spring-cloud-alicloud-context/pom.xml index 32ca8f7fc..878c90f3e 100644 --- a/spring-cloud-alicloud-context/pom.xml +++ b/spring-cloud-alicloud-context/pom.xml @@ -13,13 +13,6 @@ spring-cloud-alicloud-context Spring Cloud AliCloud Context - - - sonatype-repository - https://oss.sonatype.org/content/repositories/snapshots/ - - - From 347b10bd09f9b12e054f99191f26b551a5efbc7d Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Fri, 14 Dec 2018 11:32:10 +0800 Subject: [PATCH 21/24] Add SchedulerX endpoint. --- spring-cloud-alicloud-schedulerx/pom.xml | 15 ++++++ .../alicloud/scx/endpoint/ScxEndpoint.java | 53 +++++++++++++++++++ .../ScxEndpointAutoConfiguration.java | 36 +++++++++++++ .../main/resources/META-INF/spring.factories | 1 + 4 files changed, 105 insertions(+) create mode 100644 spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java create mode 100644 spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java diff --git a/spring-cloud-alicloud-schedulerx/pom.xml b/spring-cloud-alicloud-schedulerx/pom.xml index ce6ff07dc..38ab1ca9c 100644 --- a/spring-cloud-alicloud-schedulerx/pom.xml +++ b/spring-cloud-alicloud-schedulerx/pom.xml @@ -16,6 +16,10 @@ org.springframework.cloud spring-cloud-alicloud-context + + org.slf4j + slf4j-api + com.alibaba.edas schedulerX-client @@ -28,6 +32,17 @@ com.aliyun aliyun-java-sdk-edas + + org.springframework.boot + spring-boot-autoconfigure + provided + true + + + org.springframework.boot + spring-boot-actuator + true + \ No newline at end of file diff --git a/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java new file mode 100644 index 000000000..5b6936faa --- /dev/null +++ b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.scx.endpoint; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.actuate.endpoint.annotation.Endpoint; +import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; +import org.springframework.cloud.alicloud.context.scx.ScxProperties; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author xiaolongzuo + */ +@Endpoint(id = "scx") +public class ScxEndpoint { + + private static final Logger LOGGER = LoggerFactory.getLogger(ScxEndpoint.class); + + private ScxProperties scxProperties; + + public ScxEndpoint(ScxProperties scxProperties) { + this.scxProperties = scxProperties; + } + + /** + * @return scx endpoint + */ + @ReadOperation + public Map invoke() { + Map scxEndpoint = new HashMap<>(); + LOGGER.info("SCX endpoint invoke, scxProperties is {}", scxProperties); + scxEndpoint.put("scxProperties", scxProperties); + return scxEndpoint; + } + +} diff --git a/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java new file mode 100644 index 000000000..562533743 --- /dev/null +++ b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.alicloud.scx.endpoint; + +import org.springframework.boot.actuate.endpoint.annotation.Endpoint; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.cloud.alicloud.context.scx.ScxProperties; +import org.springframework.context.annotation.Bean; + +/** + * @author xiaolongzuo + */ +@ConditionalOnWebApplication +@ConditionalOnClass(Endpoint.class) +public class ScxEndpointAutoConfiguration { + + @Bean + public ScxEndpoint scxEndpoint(ScxProperties scxProperties) { + return new ScxEndpoint(scxProperties); + } +} diff --git a/spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories index c0fc2249f..5003685de 100644 --- a/spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-alicloud-schedulerx/src/main/resources/META-INF/spring.factories @@ -1,2 +1,3 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + org.springframework.cloud.alicloud.scx.endpoint.ScxEndpointAutoConfiguration,\ org.springframework.cloud.alicloud.scx.ScxAutoConfiguration \ No newline at end of file From 51b0766f11df3b6cfe3a41d7d2a52481b717994c Mon Sep 17 00:00:00 2001 From: flystar32 Date: Fri, 14 Dec 2018 11:51:47 +0800 Subject: [PATCH 22/24] update ans version to 1.0.1 --- spring-cloud-alibaba-dependencies/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 2c7fc5738..a05608f59 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -21,7 +21,7 @@ 3.1.0 0.6.0 1.0.8 - 0.1.1 + 1.0.1 4.0.1 1.0.2 2.16.0 From 4ae39c9ae213d6f18bb30e7cd7a55ffbaa5e9684 Mon Sep 17 00:00:00 2001 From: xiaolongzuo <150349407@qq.com> Date: Fri, 14 Dec 2018 14:08:22 +0800 Subject: [PATCH 23/24] Update SchedulerX endpoint. --- .../cloud/alicloud/scx/endpoint/ScxEndpoint.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java index 5b6936faa..d959cfb34 100644 --- a/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java +++ b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpoint.java @@ -20,6 +20,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; +import org.springframework.cloud.alicloud.context.edas.EdasProperties; import org.springframework.cloud.alicloud.context.scx.ScxProperties; import java.util.HashMap; @@ -35,7 +36,10 @@ public class ScxEndpoint { private ScxProperties scxProperties; - public ScxEndpoint(ScxProperties scxProperties) { + private EdasProperties edasProperties; + + public ScxEndpoint(EdasProperties edasProperties, ScxProperties scxProperties) { + this.edasProperties = edasProperties; this.scxProperties = scxProperties; } @@ -46,6 +50,7 @@ public class ScxEndpoint { public Map invoke() { Map scxEndpoint = new HashMap<>(); LOGGER.info("SCX endpoint invoke, scxProperties is {}", scxProperties); + scxEndpoint.put("namespace", edasProperties == null ? "" : edasProperties.getNamespace()); scxEndpoint.put("scxProperties", scxProperties); return scxEndpoint; } From 28777fecd050a21c786a4c5c080d91b74b8a1cb1 Mon Sep 17 00:00:00 2001 From: xiaolongzuo <150349407@qq.com> Date: Fri, 14 Dec 2018 14:14:08 +0800 Subject: [PATCH 24/24] Update SchedulerX endpoint. --- .../alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java index 562533743..9ca280b55 100644 --- a/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java +++ b/spring-cloud-alicloud-schedulerx/src/main/java/org/springframework/cloud/alicloud/scx/endpoint/ScxEndpointAutoConfiguration.java @@ -19,6 +19,7 @@ package org.springframework.cloud.alicloud.scx.endpoint; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.cloud.alicloud.context.edas.EdasProperties; import org.springframework.cloud.alicloud.context.scx.ScxProperties; import org.springframework.context.annotation.Bean; @@ -30,7 +31,7 @@ import org.springframework.context.annotation.Bean; public class ScxEndpointAutoConfiguration { @Bean - public ScxEndpoint scxEndpoint(ScxProperties scxProperties) { - return new ScxEndpoint(scxProperties); + public ScxEndpoint scxEndpoint(EdasProperties edasProperties, ScxProperties scxProperties) { + return new ScxEndpoint(edasProperties, scxProperties); } }