From d03e348099598247849e0525d2c1865fee865e56 Mon Sep 17 00:00:00 2001 From: wujingtao Date: Mon, 15 Nov 2021 16:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84elasticJob=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- elastic-job-springboot-core/pom.xml | 19 +++++++ .../config}/DataflowJobAutoConfig.java | 3 +- .../example/config}/SimpleJobAutoConfig.java | 4 +- .../example/config}/ZookeeperAutoConfig.java | 3 +- .../example/config}/ZookeeperProperties.java | 2 +- .../jobInstance}/ElasticDataflowJob.java | 2 +- .../jobInstance}/ElasticSimpleJob.java | 2 +- .../example}/listener/MyNormalListener.java | 9 +-- .../spring-configuration-metadata.json | 4 +- .../main/resources/META-INF/spring.factories | 4 ++ .../src}/main/resources/application.yml | 0 elastic-job-springboot-test/pom.xml | 25 +++++++++ .../src/main/java/com/example/DemoJob.java | 26 +++++++++ .../example/ElasticJobTestApplication.java | 12 ++-- pom.xml | 32 +++++------ .../sharding/MyshardingStrategy.java | 56 ------------------- src/main/resources/META-INF/spring.factories | 4 -- 17 files changed, 112 insertions(+), 95 deletions(-) create mode 100644 elastic-job-springboot-core/pom.xml rename {src/main/java/com/example/autoconfig => elastic-job-springboot-core/src/main/java/com/example/config}/DataflowJobAutoConfig.java (97%) rename {src/main/java/com/example/autoconfig => elastic-job-springboot-core/src/main/java/com/example/config}/SimpleJobAutoConfig.java (97%) rename {src/main/java/com/example/autoconfig => elastic-job-springboot-core/src/main/java/com/example/config}/ZookeeperAutoConfig.java (94%) rename {src/main/java/com/example/autoconfig => elastic-job-springboot-core/src/main/java/com/example/config}/ZookeeperProperties.java (93%) rename {src/main/java/com/example/autoconfig => elastic-job-springboot-core/src/main/java/com/example/jobInstance}/ElasticDataflowJob.java (97%) rename {src/main/java/com/example/autoconfig => elastic-job-springboot-core/src/main/java/com/example/jobInstance}/ElasticSimpleJob.java (97%) rename {src/main/java/com/example/application/job => elastic-job-springboot-core/src/main/java/com/example}/listener/MyNormalListener.java (79%) rename {src => elastic-job-springboot-core/src}/main/resources/META-INF/spring-configuration-metadata.json (70%) create mode 100644 elastic-job-springboot-core/src/main/resources/META-INF/spring.factories rename {src => elastic-job-springboot-core/src}/main/resources/application.yml (100%) create mode 100644 elastic-job-springboot-test/pom.xml create mode 100644 elastic-job-springboot-test/src/main/java/com/example/DemoJob.java rename src/main/java/com/example/application/SpringBootElasticJobApplication.java => elastic-job-springboot-test/src/main/java/com/example/ElasticJobTestApplication.java (53%) delete mode 100644 src/main/java/com/example/autoconfig/sharding/MyshardingStrategy.java delete mode 100644 src/main/resources/META-INF/spring.factories diff --git a/elastic-job-springboot-core/pom.xml b/elastic-job-springboot-core/pom.xml new file mode 100644 index 0000000..6fa84a8 --- /dev/null +++ b/elastic-job-springboot-core/pom.xml @@ -0,0 +1,19 @@ + + + + elastic-job-springboot + com.example + 3.0-SNAPSHOT + + 4.0.0 + + elastic-job-springboot-core + + + 8 + 8 + + + \ No newline at end of file diff --git a/src/main/java/com/example/autoconfig/DataflowJobAutoConfig.java b/elastic-job-springboot-core/src/main/java/com/example/config/DataflowJobAutoConfig.java similarity index 97% rename from src/main/java/com/example/autoconfig/DataflowJobAutoConfig.java rename to elastic-job-springboot-core/src/main/java/com/example/config/DataflowJobAutoConfig.java index eb87ce6..54e74f5 100644 --- a/src/main/java/com/example/autoconfig/DataflowJobAutoConfig.java +++ b/elastic-job-springboot-core/src/main/java/com/example/config/DataflowJobAutoConfig.java @@ -1,4 +1,4 @@ -package com.example.autoconfig; +package com.example.config; import com.dangdang.ddframe.job.api.dataflow.DataflowJob; import com.dangdang.ddframe.job.config.JobCoreConfiguration; @@ -7,6 +7,7 @@ import com.dangdang.ddframe.job.lite.api.JobScheduler; import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener; import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration; import com.dangdang.ddframe.job.reg.base.CoordinatorRegistryCenter; +import com.example.jobInstance.ElasticDataflowJob; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; diff --git a/src/main/java/com/example/autoconfig/SimpleJobAutoConfig.java b/elastic-job-springboot-core/src/main/java/com/example/config/SimpleJobAutoConfig.java similarity index 97% rename from src/main/java/com/example/autoconfig/SimpleJobAutoConfig.java rename to elastic-job-springboot-core/src/main/java/com/example/config/SimpleJobAutoConfig.java index 545557a..94d6deb 100644 --- a/src/main/java/com/example/autoconfig/SimpleJobAutoConfig.java +++ b/elastic-job-springboot-core/src/main/java/com/example/config/SimpleJobAutoConfig.java @@ -1,4 +1,4 @@ -package com.example.autoconfig; +package com.example.config; import com.dangdang.ddframe.job.api.simple.SimpleJob; import com.dangdang.ddframe.job.config.JobCoreConfiguration; @@ -7,6 +7,7 @@ import com.dangdang.ddframe.job.lite.api.JobScheduler; import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener; import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration; import com.dangdang.ddframe.job.reg.base.CoordinatorRegistryCenter; +import com.example.jobInstance.ElasticSimpleJob; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -15,7 +16,6 @@ import org.springframework.context.annotation.Configuration; import javax.annotation.PostConstruct; import javax.annotation.Resource; -import javax.sql.DataSource; import java.util.Map; /** diff --git a/src/main/java/com/example/autoconfig/ZookeeperAutoConfig.java b/elastic-job-springboot-core/src/main/java/com/example/config/ZookeeperAutoConfig.java similarity index 94% rename from src/main/java/com/example/autoconfig/ZookeeperAutoConfig.java rename to elastic-job-springboot-core/src/main/java/com/example/config/ZookeeperAutoConfig.java index 73330af..1080e6e 100644 --- a/src/main/java/com/example/autoconfig/ZookeeperAutoConfig.java +++ b/elastic-job-springboot-core/src/main/java/com/example/config/ZookeeperAutoConfig.java @@ -1,8 +1,9 @@ -package com.example.autoconfig; +package com.example.config; import com.dangdang.ddframe.job.reg.base.CoordinatorRegistryCenter; import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperConfiguration; import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter; +import com.example.config.ZookeeperProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/com/example/autoconfig/ZookeeperProperties.java b/elastic-job-springboot-core/src/main/java/com/example/config/ZookeeperProperties.java similarity index 93% rename from src/main/java/com/example/autoconfig/ZookeeperProperties.java rename to elastic-job-springboot-core/src/main/java/com/example/config/ZookeeperProperties.java index 0b5dee9..164b5ca 100644 --- a/src/main/java/com/example/autoconfig/ZookeeperProperties.java +++ b/elastic-job-springboot-core/src/main/java/com/example/config/ZookeeperProperties.java @@ -1,4 +1,4 @@ -package com.example.autoconfig; +package com.example.config; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/example/autoconfig/ElasticDataflowJob.java b/elastic-job-springboot-core/src/main/java/com/example/jobInstance/ElasticDataflowJob.java similarity index 97% rename from src/main/java/com/example/autoconfig/ElasticDataflowJob.java rename to elastic-job-springboot-core/src/main/java/com/example/jobInstance/ElasticDataflowJob.java index 15eb464..180b0c9 100644 --- a/src/main/java/com/example/autoconfig/ElasticDataflowJob.java +++ b/elastic-job-springboot-core/src/main/java/com/example/jobInstance/ElasticDataflowJob.java @@ -1,4 +1,4 @@ -package com.example.autoconfig; +package com.example.jobInstance; import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener; import com.dangdang.ddframe.job.lite.api.strategy.impl.AverageAllocationJobShardingStrategy; diff --git a/src/main/java/com/example/autoconfig/ElasticSimpleJob.java b/elastic-job-springboot-core/src/main/java/com/example/jobInstance/ElasticSimpleJob.java similarity index 97% rename from src/main/java/com/example/autoconfig/ElasticSimpleJob.java rename to elastic-job-springboot-core/src/main/java/com/example/jobInstance/ElasticSimpleJob.java index b69a2c7..f34cac5 100644 --- a/src/main/java/com/example/autoconfig/ElasticSimpleJob.java +++ b/elastic-job-springboot-core/src/main/java/com/example/jobInstance/ElasticSimpleJob.java @@ -1,4 +1,4 @@ -package com.example.autoconfig; +package com.example.jobInstance; import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener; import com.dangdang.ddframe.job.lite.api.strategy.impl.AverageAllocationJobShardingStrategy; diff --git a/src/main/java/com/example/application/job/listener/MyNormalListener.java b/elastic-job-springboot-core/src/main/java/com/example/listener/MyNormalListener.java similarity index 79% rename from src/main/java/com/example/application/job/listener/MyNormalListener.java rename to elastic-job-springboot-core/src/main/java/com/example/listener/MyNormalListener.java index e464896..8cc9409 100644 --- a/src/main/java/com/example/application/job/listener/MyNormalListener.java +++ b/elastic-job-springboot-core/src/main/java/com/example/listener/MyNormalListener.java @@ -1,10 +1,11 @@ -package com.example.application.job.listener; +package com.example.listener; -import cn.hutool.core.date.DateUtil; import com.dangdang.ddframe.job.executor.ShardingContexts; import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener; import lombok.extern.slf4j.Slf4j; +import java.time.LocalDateTime; + /** * @author q @@ -19,11 +20,11 @@ public class MyNormalListener implements ElasticJobListener { */ @Override public void beforeJobExecuted(ShardingContexts shardingContexts) { - log.info("我是 : {} 作业, {}开始执行!", shardingContexts.getJobName(), DateUtil.now()); + log.info("我是 : {} 作业, {}开始执行!", shardingContexts.getJobName(), LocalDateTime.now()); } @Override public void afterJobExecuted(ShardingContexts shardingContexts) { - log.info("我是 : {} 作业, {}结束执行!", shardingContexts.getJobName(), DateUtil.now()); + log.info("我是 : {} 作业, {}结束执行!", shardingContexts.getJobName(), LocalDateTime.now()); } } diff --git a/src/main/resources/META-INF/spring-configuration-metadata.json b/elastic-job-springboot-core/src/main/resources/META-INF/spring-configuration-metadata.json similarity index 70% rename from src/main/resources/META-INF/spring-configuration-metadata.json rename to elastic-job-springboot-core/src/main/resources/META-INF/spring-configuration-metadata.json index 91e7898..c369fc3 100644 --- a/src/main/resources/META-INF/spring-configuration-metadata.json +++ b/elastic-job-springboot-core/src/main/resources/META-INF/spring-configuration-metadata.json @@ -4,13 +4,13 @@ "name": "elasticjob.zookeeper.namespace", "type": "java.lang.String", "description": "Zookeeper 命名空间", - "sourceType": "com.example.autoconfig.ZookeeperProperties" + "sourceType": "com.example.config.ZookeeperProperties" }, { "name": "elasticjob.zookeeper.server-list", "type": "java.lang.String", "description": "Zookeeper 服务列表", - "sourceType": "com.example.autoconfig.ZookeeperProperties" + "sourceType": "com.example.config.ZookeeperProperties" } ] } \ No newline at end of file diff --git a/elastic-job-springboot-core/src/main/resources/META-INF/spring.factories b/elastic-job-springboot-core/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..0a42e20 --- /dev/null +++ b/elastic-job-springboot-core/src/main/resources/META-INF/spring.factories @@ -0,0 +1,4 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.example.config.ZookeeperAutoConfig,\ + com.example.config.DataflowJobAutoConfig,\ + com.example.config.SimpleJobAutoConfig diff --git a/src/main/resources/application.yml b/elastic-job-springboot-core/src/main/resources/application.yml similarity index 100% rename from src/main/resources/application.yml rename to elastic-job-springboot-core/src/main/resources/application.yml diff --git a/elastic-job-springboot-test/pom.xml b/elastic-job-springboot-test/pom.xml new file mode 100644 index 0000000..3f4083c --- /dev/null +++ b/elastic-job-springboot-test/pom.xml @@ -0,0 +1,25 @@ + + + + elastic-job-springboot + com.example + 3.0-SNAPSHOT + + 4.0.0 + + elastic-job-springboot-test + + + 8 + 8 + + + + com.example + elastic-job-springboot-core + 2.0-SNAPSHOT + + + \ No newline at end of file diff --git a/elastic-job-springboot-test/src/main/java/com/example/DemoJob.java b/elastic-job-springboot-test/src/main/java/com/example/DemoJob.java new file mode 100644 index 0000000..b1fa6d3 --- /dev/null +++ b/elastic-job-springboot-test/src/main/java/com/example/DemoJob.java @@ -0,0 +1,26 @@ +package com.example; + +import com.dangdang.ddframe.job.api.ShardingContext; +import com.dangdang.ddframe.job.api.simple.SimpleJob; +import com.example.jobInstance.ElasticSimpleJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author wujingtao + * @date 2021/11/15 + */ +@Slf4j +@ElasticSimpleJob( + jobName = "DemoJob", cron = "0 0/1 * * * ?", shardingTotalCount = 1, overwrite = true, jobEvent = false) +@Component +public class DemoJob implements SimpleJob { + @Override + public void execute(ShardingContext shardingContext) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + log.info("定时任务 :{} 启动,{}", "DemoJob", formatter.format(LocalDateTime.now())); + } +} diff --git a/src/main/java/com/example/application/SpringBootElasticJobApplication.java b/elastic-job-springboot-test/src/main/java/com/example/ElasticJobTestApplication.java similarity index 53% rename from src/main/java/com/example/application/SpringBootElasticJobApplication.java rename to elastic-job-springboot-test/src/main/java/com/example/ElasticJobTestApplication.java index af2bba7..324a05e 100644 --- a/src/main/java/com/example/application/SpringBootElasticJobApplication.java +++ b/elastic-job-springboot-test/src/main/java/com/example/ElasticJobTestApplication.java @@ -1,15 +1,15 @@ -package com.example.application; +package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** - * @author q + * @author wujingtao + * @date 2021/11/15 */ @SpringBootApplication -public class SpringBootElasticJobApplication { - +public class ElasticJobTestApplication { public static void main(String[] args) { - SpringApplication.run(SpringBootElasticJobApplication.class, args); + SpringApplication.run(ElasticJobTestApplication.class, args); } -} \ No newline at end of file +} diff --git a/pom.xml b/pom.xml index b565c12..9662969 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,12 @@ com.example elastic-job-springboot - 2.0-SNAPSHOT + pom + 3.0-SNAPSHOT + + elastic-job-springboot-core + elastic-job-springboot-test + 8 @@ -19,11 +24,11 @@ spring-boot-starter-web 2.3.2.RELEASE - - org.springframework.boot - spring-boot-starter-test - 2.3.2.RELEASE - + + + + + org.springframework.boot spring-boot-configuration-processor @@ -40,16 +45,11 @@ elastic-job-lite-core 2.1.5 - - com.dangdang - elastic-job-lite-spring - 2.1.5 - - - cn.hutool - hutool-all - 5.4.0 - + + + + + ${project.name} diff --git a/src/main/java/com/example/autoconfig/sharding/MyshardingStrategy.java b/src/main/java/com/example/autoconfig/sharding/MyshardingStrategy.java deleted file mode 100644 index eabfbad..0000000 --- a/src/main/java/com/example/autoconfig/sharding/MyshardingStrategy.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.example.autoconfig.sharding; - -import com.dangdang.ddframe.job.lite.api.strategy.JobInstance; -import com.dangdang.ddframe.job.lite.api.strategy.JobShardingStrategy; -import org.springframework.util.CollectionUtils; - -import java.util.*; - -/** - * 自定义分片策略 - 实现全轮询算法 - * - * @author q - */ -public class MyshardingStrategy implements JobShardingStrategy { - - - /** - * @param jobInstances 所有有效的服务 - * @param jobName 作业名称 - * @param shardingTotalCount 分片总数 - * @return 实例 所获取的分片项 - */ - @Override - public Map> sharding(List jobInstances, String jobName, int shardingTotalCount) { - - // 创建返回值容器 - Map> rtnMap = new HashMap<>(10); - - // 创建队列模型 - // fixme 这个队列可以自行进行选择 - ArrayDeque queue = new ArrayDeque<>(shardingTotalCount); - - for (int i = 0; i < shardingTotalCount; i++) { - queue.add(i); - } - - // 轮询 - while (queue.size() > 0) { - for (JobInstance jobInstance : jobInstances) { - if (queue.size() > 0){ - Integer shardingItem = queue.pop(); - List shardingItemList = rtnMap.get(jobInstance); - if (CollectionUtils.isEmpty(shardingItemList)){ - ArrayList list = new ArrayList<>(100); - list.add(shardingItem); - rtnMap.put(jobInstance, shardingItemList); - }else { - shardingItemList.add(shardingItem); - } - } - } - } - - return rtnMap; - } -} diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 0d6988f..0000000 --- a/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,4 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.example.autoconfig.ZookeeperAutoConfig,\ - com.example.autoconfig.DataflowJobAutoConfig,\ - com.example.autoconfig.SimpleJobAutoConfig