From f1bd3fd2c288347ca070a05ebb39c9cce23dcfb8 Mon Sep 17 00:00:00 2001 From: "chenzhu.zxl" Date: Thu, 13 Dec 2018 15:04:00 +0800 Subject: [PATCH] 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 + + + +