From 0c37a35b7d554d17d0dfb9b876d7bc0d4fa444f4 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Tue, 26 Sep 2023 23:23:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:2.4.0=201.=20=E5=AE=8C=E6=88=90=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E7=9A=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/common/{client => }/Lifecycle.java | 2 +- .../common/{client => }/NettyClient.java | 9 +- .../{client => }/annotation/Mapping.java | 4 +- .../config/EasyRetryProperties.java | 2 +- .../exception/EasyRetryClientException.java | 2 +- .../EasyRetryClientTimeOutException.java | 2 +- .../{client => }/netty/NettyChannel.java | 7 +- .../netty/NettyHttpClientHandler.java | 8 +- .../netty/NettyHttpConnectClient.java | 6 +- .../{client => }/netty/RequestMethod.java | 2 +- .../common/{client => }/netty/RpcContext.java | 2 +- .../proxy/ClientInvokeHandler.java | 12 +- .../{client => }/proxy/RequestBuilder.java | 4 +- .../spring-configuration-metadata.json | 14 +-- .../client/core}/cache/GroupVersionCache.java | 13 +- .../retry/client/core/client/NettyClient.java | 8 +- .../core/init/EasyRetryEndListener.java | 2 +- .../core/init/EasyRetryStartListener.java | 2 +- .../intercepter/EasyRetryInterceptor.java | 2 +- .../core/register/RetryableRegistrar.java | 2 +- .../client/core/report/AbstractReport.java | 2 +- .../retry/client/core/report/AsyncReport.java | 7 +- .../client/core/report/ReportListener.java | 4 +- .../retry/client/core/report/SyncReport.java | 2 +- .../strategy/AbstractRetryStrategies.java | 2 +- .../spring-configuration-metadata.json | 14 +-- .../easy-retry-client-job-core/pom.xml | 34 ++++++ .../retry/client/job/core/IJobExecutor.java | 17 +++ .../retry/client/job/core/JobScanner.java | 9 ++ .../easy/retry/client/job/core/Scanner.java | 15 +++ .../job/core/annotation/JobExecutor.java | 27 +++++ .../job/core/cache/JobExecutorInfoCache.java | 28 +++++ .../job/core/cache/ThreadPoolCache.java | 30 +++++ .../client/job/core/client/JobEndPoint.java | 74 ++++++++++++ .../client/job/core/dto/ExecuteResult.java | 9 ++ .../retry/client/job/core/dto/JobContext.java | 17 +++ .../client/job/core/dto/JobExecutorInfo.java | 22 ++++ .../core/handler/AbstractIJobExecutor.java | 26 ++++ .../job/core/handler/SimpleIJobExecutor.java | 17 +++ .../core/register/JobExecutorRegistrar.java | 49 ++++++++ .../register/scan/JobExecutorScanner.java | 112 ++++++++++++++++++ .../retry/client/model/DispatchJobDTO.java | 10 ++ 42 files changed, 561 insertions(+), 71 deletions(-) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/Lifecycle.java (81%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/NettyClient.java (63%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/annotation/Mapping.java (80%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/config/EasyRetryProperties.java (97%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/exception/EasyRetryClientException.java (94%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/exception/EasyRetryClientTimeOutException.java (94%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/netty/NettyChannel.java (93%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/netty/NettyHttpClientHandler.java (93%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/netty/NettyHttpConnectClient.java (96%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/netty/RequestMethod.java (81%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/netty/RpcContext.java (97%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/proxy/ClientInvokeHandler.java (86%) rename easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/{client => }/proxy/RequestBuilder.java (92%) rename easy-retry-client/{easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client => easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core}/cache/GroupVersionCache.java (87%) create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/IJobExecutor.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/JobScanner.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/Scanner.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/annotation/JobExecutor.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/JobExecutorInfoCache.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/ThreadPoolCache.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/ExecuteResult.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/AbstractIJobExecutor.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/SimpleIJobExecutor.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/JobExecutorRegistrar.java create mode 100644 easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/Lifecycle.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/Lifecycle.java similarity index 81% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/Lifecycle.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/Lifecycle.java index 0bcdb1ae..14549995 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/Lifecycle.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/Lifecycle.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.common.client; +package com.aizuda.easy.retry.client.common; /** * 组件生命周期 diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/NettyClient.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/NettyClient.java similarity index 63% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/NettyClient.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/NettyClient.java index 531cb481..8efc753e 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/NettyClient.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/NettyClient.java @@ -1,13 +1,10 @@ -package com.aizuda.easy.retry.client.common.client; +package com.aizuda.easy.retry.client.common; -import com.aizuda.easy.retry.client.common.client.annotation.Mapping; -import com.aizuda.easy.retry.client.common.client.netty.RequestMethod; +import com.aizuda.easy.retry.client.common.annotation.Mapping; +import com.aizuda.easy.retry.client.common.netty.RequestMethod; import com.aizuda.easy.retry.common.core.constant.SystemConstants.HTTP_PATH; -import com.aizuda.easy.retry.common.core.model.NettyResult; import com.aizuda.easy.retry.common.core.model.Result; -import java.util.List; - /** * netty 客户端请求类 diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/annotation/Mapping.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/annotation/Mapping.java similarity index 80% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/annotation/Mapping.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/annotation/Mapping.java index 17588d3b..17b3017c 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/annotation/Mapping.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/annotation/Mapping.java @@ -1,6 +1,6 @@ -package com.aizuda.easy.retry.client.common.client.annotation; +package com.aizuda.easy.retry.client.common.annotation; -import com.aizuda.easy.retry.client.common.client.netty.RequestMethod; +import com.aizuda.easy.retry.client.common.netty.RequestMethod; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/config/EasyRetryProperties.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/config/EasyRetryProperties.java similarity index 97% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/config/EasyRetryProperties.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/config/EasyRetryProperties.java index 858d0f41..e7bc80c2 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/config/EasyRetryProperties.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/config/EasyRetryProperties.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.common.client.config; +package com.aizuda.easy.retry.client.common.config; import com.aizuda.easy.retry.common.core.context.SpringContext; import lombok.Data; diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientException.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/exception/EasyRetryClientException.java similarity index 94% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientException.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/exception/EasyRetryClientException.java index 37365df0..54ed0e7a 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientException.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/exception/EasyRetryClientException.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.common.client.exception; +package com.aizuda.easy.retry.client.common.exception; import com.aizuda.easy.retry.common.core.exception.BaseEasyRetryException; diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientTimeOutException.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/exception/EasyRetryClientTimeOutException.java similarity index 94% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientTimeOutException.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/exception/EasyRetryClientTimeOutException.java index 876c9e02..ead6fd68 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientTimeOutException.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/exception/EasyRetryClientTimeOutException.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.common.client.exception; +package com.aizuda.easy.retry.client.common.exception; import com.aizuda.easy.retry.common.core.exception.BaseEasyRetryException; diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyChannel.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyChannel.java similarity index 93% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyChannel.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyChannel.java index ba370ba3..309ff9e4 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyChannel.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyChannel.java @@ -1,8 +1,8 @@ -package com.aizuda.easy.retry.client.common.client.netty; +package com.aizuda.easy.retry.client.common.netty; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; -import com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties; +import com.aizuda.easy.retry.client.common.config.EasyRetryProperties; import com.aizuda.easy.retry.common.core.context.SpringContext; import com.aizuda.easy.retry.common.core.enums.HeadersEnum; import com.aizuda.easy.retry.common.core.log.LogUtils; @@ -93,7 +93,8 @@ public class NettyChannel { .set(HeadersEnum.GROUP_NAME.getKey(), EasyRetryProperties.getGroup()) .set(HeadersEnum.CONTEXT_PATH.getKey(), Optional.ofNullable(serverProperties.getServlet().getContextPath()).orElse("/")) .set(HeadersEnum.HOST_PORT.getKey(), port) - .set(HeadersEnum.VERSION.getKey(), GroupVersionCache.getVersion()) + // TODO 待办 +// .set(HeadersEnum.VERSION.getKey(), GroupVersionCache.getVersion()) ; //发送数据 diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpClientHandler.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyHttpClientHandler.java similarity index 93% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpClientHandler.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyHttpClientHandler.java index 04d6dedb..213bd698 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpClientHandler.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyHttpClientHandler.java @@ -1,7 +1,7 @@ -package com.aizuda.easy.retry.client.common.client.netty; +package com.aizuda.easy.retry.client.common.netty; -import com.aizuda.easy.retry.client.common.client.proxy.RequestBuilder; -import com.aizuda.easy.retry.client.common.client.NettyClient; +import com.aizuda.easy.retry.client.common.proxy.RequestBuilder; +import com.aizuda.easy.retry.client.common.NettyClient; import com.aizuda.easy.retry.common.core.constant.SystemConstants.BEAT; import com.aizuda.easy.retry.common.core.log.LogUtils; import com.aizuda.easy.retry.common.core.model.NettyResult; @@ -16,8 +16,6 @@ import lombok.extern.slf4j.Slf4j; import java.util.concurrent.TimeUnit; -import static com.aizuda.easy.retry.common.core.constant.SystemConstants.BEAT.PING; - /** * netty 客户端处理器 * diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpConnectClient.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyHttpConnectClient.java similarity index 96% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpConnectClient.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyHttpConnectClient.java index adb98b16..bf08526e 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpConnectClient.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyHttpConnectClient.java @@ -1,7 +1,7 @@ -package com.aizuda.easy.retry.client.common.client.netty; +package com.aizuda.easy.retry.client.common.netty; -import com.aizuda.easy.retry.client.common.client.Lifecycle; -import com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties; +import com.aizuda.easy.retry.client.common.Lifecycle; +import com.aizuda.easy.retry.client.common.config.EasyRetryProperties; import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/RequestMethod.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/RequestMethod.java similarity index 81% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/RequestMethod.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/RequestMethod.java index fb3e516c..cdd86c3e 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/RequestMethod.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/RequestMethod.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.common.client.netty; +package com.aizuda.easy.retry.client.common.netty; /** * 请求类型 diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/RpcContext.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/RpcContext.java similarity index 97% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/RpcContext.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/RpcContext.java index 62beec01..0e4274ba 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/RpcContext.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/RpcContext.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.common.client.netty; +package com.aizuda.easy.retry.client.common.netty; import com.aizuda.easy.retry.common.core.log.LogUtils; import com.aizuda.easy.retry.common.core.model.EasyRetryRequest; diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/proxy/ClientInvokeHandler.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/proxy/ClientInvokeHandler.java similarity index 86% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/proxy/ClientInvokeHandler.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/proxy/ClientInvokeHandler.java index 6378c7c0..b671f4a3 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/proxy/ClientInvokeHandler.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/proxy/ClientInvokeHandler.java @@ -1,12 +1,12 @@ -package com.aizuda.easy.retry.client.common.client.proxy; +package com.aizuda.easy.retry.client.common.proxy; import cn.hutool.core.date.StopWatch; import cn.hutool.core.lang.Assert; -import com.aizuda.easy.retry.client.common.client.annotation.Mapping; -import com.aizuda.easy.retry.client.common.client.exception.EasyRetryClientException; -import com.aizuda.easy.retry.client.common.client.exception.EasyRetryClientTimeOutException; -import com.aizuda.easy.retry.client.common.client.netty.NettyChannel; -import com.aizuda.easy.retry.client.common.client.netty.RpcContext; +import com.aizuda.easy.retry.client.common.annotation.Mapping; +import com.aizuda.easy.retry.client.common.exception.EasyRetryClientException; +import com.aizuda.easy.retry.client.common.exception.EasyRetryClientTimeOutException; +import com.aizuda.easy.retry.client.common.netty.NettyChannel; +import com.aizuda.easy.retry.client.common.netty.RpcContext; import com.aizuda.easy.retry.common.core.log.LogUtils; import com.aizuda.easy.retry.common.core.model.EasyRetryRequest; import io.netty.handler.codec.http.HttpMethod; diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/proxy/RequestBuilder.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/proxy/RequestBuilder.java similarity index 92% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/proxy/RequestBuilder.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/proxy/RequestBuilder.java index fe5c332a..1113e985 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/proxy/RequestBuilder.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/proxy/RequestBuilder.java @@ -1,6 +1,6 @@ -package com.aizuda.easy.retry.client.common.client.proxy; +package com.aizuda.easy.retry.client.common.proxy; -import com.aizuda.easy.retry.client.common.client.exception.EasyRetryClientException; +import com.aizuda.easy.retry.client.common.exception.EasyRetryClientException; import java.lang.reflect.Proxy; import java.util.Objects; diff --git a/easy-retry-client/easy-retry-client-common/src/main/resources/spring-configuration-metadata.json b/easy-retry-client/easy-retry-client-common/src/main/resources/spring-configuration-metadata.json index 55610953..d6072174 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/resources/spring-configuration-metadata.json +++ b/easy-retry-client/easy-retry-client-common/src/main/resources/spring-configuration-metadata.json @@ -2,14 +2,14 @@ "groups": [ { "name": "easy-retry", - "type": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties" + "type": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties", + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties" }, { "name": "easy-retry.server", "sourceMethod": "getServer()", - "type": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties$ServerConfig", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties" + "type": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties$ServerConfig", + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties" } ], "properties": [ @@ -18,12 +18,12 @@ "type": "java.lang.String", "defaultValue": "127.0.0.1", "description": "服务端的地址,若服务端集群部署则此处配置域名", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties$ServerConfig" + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties$ServerConfig" }, { "name": "easy-retry.server.port", - "type": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties.ServerConfig", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties", + "type": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties.ServerConfig", + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties", "description": "服务端netty的端口号", "defaultValue": "1788" } diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/cache/GroupVersionCache.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/GroupVersionCache.java similarity index 87% rename from easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/cache/GroupVersionCache.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/GroupVersionCache.java index 382b4743..5afdb67b 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/cache/GroupVersionCache.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/GroupVersionCache.java @@ -1,14 +1,13 @@ -package com.aizuda.easy.retry.client.common.client.cache; +package com.aizuda.easy.retry.client.core.cache; -import com.aizuda.easy.retry.client.core.Lifecycle; -import com.aizuda.easy.retry.client.core.client.NettyClient; -import com.aizuda.easy.retry.client.core.client.proxy.RequestBuilder; +import com.aizuda.easy.retry.client.common.Lifecycle; +import com.aizuda.easy.retry.client.common.NettyClient; +import com.aizuda.easy.retry.client.common.proxy.RequestBuilder; import com.aizuda.easy.retry.common.core.constant.SystemConstants; import com.aizuda.easy.retry.common.core.log.LogUtils; import com.aizuda.easy.retry.common.core.model.NettyResult; import com.aizuda.easy.retry.common.core.util.JsonUtil; import com.aizuda.easy.retry.server.model.dto.ConfigDTO; -import com.aizuda.easy.retry.server.model.dto.ConfigDTO.Scene; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -42,12 +41,12 @@ public class GroupVersionCache implements Lifecycle { if (Objects.isNull(configDTO)){ return SystemConstants.DEFAULT_DDL; } - List sceneList = configDTO.getSceneList(); + List sceneList = configDTO.getSceneList(); if (CollectionUtils.isEmpty(sceneList)) { return SystemConstants.DEFAULT_DDL; } - for (Scene scene : sceneList) { + for (ConfigDTO.Scene scene : sceneList) { if (scene.getSceneName().equals(sceneName)) { return scene.getDdl(); } diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java index dbee1bb1..e1a9cdb2 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java @@ -1,10 +1,10 @@ package com.aizuda.easy.retry.client.core.client; +import com.aizuda.easy.retry.client.common.annotation.Mapping; +import com.aizuda.easy.retry.client.common.netty.RequestMethod; import com.aizuda.easy.retry.common.core.constant.SystemConstants.HTTP_PATH; import com.aizuda.easy.retry.common.core.model.NettyResult; -import com.aizuda.easy.retry.common.core.model.Result; import com.aizuda.easy.retry.server.model.dto.RetryTaskDTO; -import org.springframework.web.bind.annotation.RequestMethod; import java.util.List; @@ -18,8 +18,8 @@ import java.util.List; */ public interface NettyClient { - @Mapping(method = RequestMethod.GET, path = HTTP_PATH.CONFIG) - Result getConfig(Integer version); +// @Mapping(method = RequestMethod.GET, path = HTTP_PATH.CONFIG) +// Result getConfig(Integer version); @Mapping(method = RequestMethod.POST, path = HTTP_PATH.BATCH_REPORT) NettyResult reportRetryInfo(List list); diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryEndListener.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryEndListener.java index ad0532dd..3654b419 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryEndListener.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryEndListener.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.client.core.init; -import com.aizuda.easy.retry.client.core.Lifecycle; +import com.aizuda.easy.retry.client.common.Lifecycle; import com.aizuda.easy.retry.common.core.util.EasyRetryVersion; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryStartListener.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryStartListener.java index f18b924d..8d397754 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryStartListener.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryStartListener.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.client.core.init; -import com.aizuda.easy.retry.client.core.Lifecycle; +import com.aizuda.easy.retry.client.common.Lifecycle; import com.aizuda.easy.retry.common.core.constant.SystemConstants; import com.aizuda.easy.retry.common.core.util.EasyRetryVersion; import lombok.extern.slf4j.Slf4j; diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryInterceptor.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryInterceptor.java index 1dc8fdfe..ccecf105 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryInterceptor.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryInterceptor.java @@ -2,10 +2,10 @@ package com.aizuda.easy.retry.client.core.intercepter; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.aizuda.easy.retry.client.common.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.annotation.Retryable; import com.aizuda.easy.retry.client.core.cache.GroupVersionCache; import com.aizuda.easy.retry.client.core.cache.RetryerInfoCache; -import com.aizuda.easy.retry.client.core.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.intercepter.RetrySiteSnapshot.EnumStage; import com.aizuda.easy.retry.client.core.retryer.RetryerInfo; import com.aizuda.easy.retry.client.core.retryer.RetryerResultContext; diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/RetryableRegistrar.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/RetryableRegistrar.java index 14e183a1..9bd12fe6 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/RetryableRegistrar.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/RetryableRegistrar.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.client.core.register; -import com.aizuda.easy.retry.client.core.Lifecycle; +import com.aizuda.easy.retry.client.common.Lifecycle; import com.aizuda.easy.retry.client.core.Scanner; import com.aizuda.easy.retry.client.core.cache.RetryerInfoCache; import com.aizuda.easy.retry.client.core.exception.EasyRetryClientException; diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AbstractReport.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AbstractReport.java index f3c224de..c8fe96f6 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AbstractReport.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AbstractReport.java @@ -1,12 +1,12 @@ package com.aizuda.easy.retry.client.core.report; import cn.hutool.core.lang.Assert; +import com.aizuda.easy.retry.client.common.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.ExpressionEngine; import com.aizuda.easy.retry.client.core.IdempotentIdGenerate; import com.aizuda.easy.retry.client.core.Report; import com.aizuda.easy.retry.client.core.RetryArgSerializer; import com.aizuda.easy.retry.client.core.cache.RetryerInfoCache; -import com.aizuda.easy.retry.client.core.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.exception.EasyRetryClientException; import com.aizuda.easy.retry.client.core.intercepter.RetrySiteSnapshot; import com.aizuda.easy.retry.client.core.loader.EasyRetrySpiLoader; diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AsyncReport.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AsyncReport.java index 0ea4d7de..a045a3c5 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AsyncReport.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AsyncReport.java @@ -1,8 +1,7 @@ package com.aizuda.easy.retry.client.core.report; -import com.aizuda.easy.retry.client.core.Lifecycle; -import com.aizuda.easy.retry.client.core.config.EasyRetryProperties; -import com.aizuda.easy.retry.client.core.config.EasyRetryProperties.SlidingWindowConfig; +import com.aizuda.easy.retry.client.common.Lifecycle; +import com.aizuda.easy.retry.client.common.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.retryer.RetryerInfo; import com.aizuda.easy.retry.client.core.window.SlidingWindow; import com.aizuda.easy.retry.server.model.dto.RetryTaskDTO; @@ -51,7 +50,7 @@ public class AsyncReport extends AbstractReport implements Lifecycle { @Override public void start() { - SlidingWindowConfig slidingWindowConfig = easyRetryProperties.getSlidingWindow(); + EasyRetryProperties.SlidingWindowConfig slidingWindowConfig = easyRetryProperties.getSlidingWindow(); slidingWindow = SlidingWindow .Builder diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/ReportListener.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/ReportListener.java index 25de4939..59f3fa23 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/ReportListener.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/ReportListener.java @@ -1,11 +1,11 @@ package com.aizuda.easy.retry.client.core.report; +import com.aizuda.easy.retry.client.common.config.EasyRetryProperties; +import com.aizuda.easy.retry.client.common.proxy.RequestBuilder; import com.aizuda.easy.retry.client.core.RetryExecutor; import com.aizuda.easy.retry.client.core.RetryExecutorParameter; import com.aizuda.easy.retry.client.core.cache.GroupVersionCache; import com.aizuda.easy.retry.client.core.client.NettyClient; -import com.aizuda.easy.retry.client.core.client.proxy.RequestBuilder; -import com.aizuda.easy.retry.client.core.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.executor.GuavaRetryExecutor; import com.aizuda.easy.retry.common.core.alarm.Alarm; import com.aizuda.easy.retry.common.core.alarm.AlarmContext; diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/SyncReport.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/SyncReport.java index a541b424..66354139 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/SyncReport.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/SyncReport.java @@ -1,7 +1,7 @@ package com.aizuda.easy.retry.client.core.report; +import com.aizuda.easy.retry.client.common.proxy.RequestBuilder; import com.aizuda.easy.retry.client.core.client.NettyClient; -import com.aizuda.easy.retry.client.core.client.proxy.RequestBuilder; import com.aizuda.easy.retry.client.core.retryer.RetryerInfo; import com.aizuda.easy.retry.common.core.log.LogUtils; import com.aizuda.easy.retry.common.core.model.NettyResult; diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java index 66b892eb..b2c474a5 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java @@ -1,9 +1,9 @@ package com.aizuda.easy.retry.client.core.strategy; +import com.aizuda.easy.retry.client.common.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.RetryExecutor; import com.aizuda.easy.retry.client.core.RetryExecutorParameter; import com.aizuda.easy.retry.client.core.cache.GroupVersionCache; -import com.aizuda.easy.retry.client.core.config.EasyRetryProperties; import com.aizuda.easy.retry.client.core.event.EasyRetryListener; import com.aizuda.easy.retry.client.core.intercepter.RetrySiteSnapshot; import com.aizuda.easy.retry.client.core.Report; diff --git a/easy-retry-client/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json b/easy-retry-client/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json index 55610953..d6072174 100644 --- a/easy-retry-client/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json +++ b/easy-retry-client/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json @@ -2,14 +2,14 @@ "groups": [ { "name": "easy-retry", - "type": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties" + "type": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties", + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties" }, { "name": "easy-retry.server", "sourceMethod": "getServer()", - "type": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties$ServerConfig", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties" + "type": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties$ServerConfig", + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties" } ], "properties": [ @@ -18,12 +18,12 @@ "type": "java.lang.String", "defaultValue": "127.0.0.1", "description": "服务端的地址,若服务端集群部署则此处配置域名", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties$ServerConfig" + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties$ServerConfig" }, { "name": "easy-retry.server.port", - "type": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties.ServerConfig", - "sourceType": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties", + "type": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties.ServerConfig", + "sourceType": "com.aizuda.easy.retry.client.common.config.EasyRetryProperties", "description": "服务端netty的端口号", "defaultValue": "1788" } diff --git a/easy-retry-client/easy-retry-client-job-core/pom.xml b/easy-retry-client/easy-retry-client-job-core/pom.xml index eebbf81c..c017aaf3 100644 --- a/easy-retry-client/easy-retry-client-job-core/pom.xml +++ b/easy-retry-client/easy-retry-client-job-core/pom.xml @@ -16,6 +16,40 @@ 8 8 UTF-8 + 32.0.0-jre + + + org.springframework.boot + spring-boot-starter-web + provided + + + org.springframework.boot + spring-boot-starter-aop + + + org.projectlombok + lombok + true + + + com.aizuda + easy-retry-common-server-api + + + com.aizuda + easy-retry-common-client-api + + + com.aizuda + easy-retry-client-common + + + com.google.guava + guava + ${guava.version} + + diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/IJobExecutor.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/IJobExecutor.java new file mode 100644 index 00000000..b0bd9a0d --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/IJobExecutor.java @@ -0,0 +1,17 @@ +package com.aizuda.easy.retry.client.job.core; + +import com.aizuda.easy.retry.client.job.core.dto.ExecuteResult; + +import java.util.concurrent.Callable; + +/** + * job执行者 + * + * @author: www.byteblogs.com + * @date : 2023-09-27 09:38 + * @since 2.4.0 + */ +public interface IJobExecutor extends Callable { + + String getName(); +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/JobScanner.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/JobScanner.java new file mode 100644 index 00000000..ac6416ca --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/JobScanner.java @@ -0,0 +1,9 @@ +package com.aizuda.easy.retry.client.job.core; + +/** + * @author www.byteblogs.com + * @date 2023-09-27 22:31:59 + * @since + */ +public class JobScanner { +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/Scanner.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/Scanner.java new file mode 100644 index 00000000..a19098d3 --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/Scanner.java @@ -0,0 +1,15 @@ +package com.aizuda.easy.retry.client.job.core; + + +import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo; + +import java.util.List; + +/** + * @author: www.byteblogs.com + * @date : 2022-02-10 09:13 + */ +public interface Scanner { + + List doScan(); +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/annotation/JobExecutor.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/annotation/JobExecutor.java new file mode 100644 index 00000000..ddd79e8e --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/annotation/JobExecutor.java @@ -0,0 +1,27 @@ +package com.aizuda.easy.retry.client.job.core.annotation; + +import java.lang.annotation.*; + +/** + * job执行者 + * + * @author www.byteblogs.com + * @date 2023-09-26 23:19:01 + * @since 2.4.0 + */ +@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +@Documented +public @interface JobExecutor { + + /** + * 执行器名称 + */ + String name(); + + /** + * 执行器方法 + */ + String method() default "jobExecute"; +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/JobExecutorInfoCache.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/JobExecutorInfoCache.java new file mode 100644 index 00000000..b1e6867e --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/JobExecutorInfoCache.java @@ -0,0 +1,28 @@ +package com.aizuda.easy.retry.client.job.core.cache; + +import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo; + +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author: www.byteblogs.com + * @date : 2022-03-03 17:43 + */ +public class JobExecutorInfoCache { + + private static final ConcurrentHashMap JOB_EXECUTOR_REPOSITORY = new ConcurrentHashMap<>(); + + public static void put(JobExecutorInfo jobExecutorInfo) { + JOB_EXECUTOR_REPOSITORY.put(jobExecutorInfo.getExecutorName(), jobExecutorInfo); + } + + public static JobExecutorInfo get(String executorName) { + return JOB_EXECUTOR_REPOSITORY.get(executorName); + } + + public static boolean isExisted(String executorName) { + return !Objects.nonNull(JOB_EXECUTOR_REPOSITORY.get(executorName)); + } + +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/ThreadPoolCache.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/ThreadPoolCache.java new file mode 100644 index 00000000..4d2b18a0 --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/cache/ThreadPoolCache.java @@ -0,0 +1,30 @@ +package com.aizuda.easy.retry.client.job.core.cache; + +import org.springframework.stereotype.Component; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-27 17:12 + */ +@Component +public class ThreadPoolCache { + private static final ConcurrentHashMap CACHE_THREAD_POOL = new ConcurrentHashMap<>(); + + public static ThreadPoolExecutor createThreadPool(Long taskId, int parallelNum) { + Supplier supplier = () -> new ThreadPoolExecutor( + parallelNum, parallelNum, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>() + ); + return CACHE_THREAD_POOL.putIfAbsent(taskId, supplier.get()); + } + + public static void getThreadPool(Long taskId, int parallelNum) { + + + } +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java new file mode 100644 index 00000000..bbeb60c3 --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/client/JobEndPoint.java @@ -0,0 +1,74 @@ +package com.aizuda.easy.retry.client.job.core.client; + +import com.aizuda.easy.retry.client.job.core.cache.JobExecutorInfoCache; +import com.aizuda.easy.retry.client.job.core.cache.ThreadPoolCache; +import com.aizuda.easy.retry.client.job.core.dto.ExecuteResult; +import com.aizuda.easy.retry.client.job.core.dto.JobContext; +import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo; +import com.aizuda.easy.retry.client.model.DispatchJobDTO; +import com.aizuda.easy.retry.client.model.InterruptJobDTO; +import com.aizuda.easy.retry.common.core.context.SpringContext; +import com.aizuda.easy.retry.common.core.model.Result; +import com.google.common.util.concurrent.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ReflectionUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.concurrent.Callable; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-27 16:33 + */ +@RestController +@RequestMapping("/job") +@Slf4j +public class JobEndPoint { + @PostMapping("/dispatch/v1") + public Result dispatchJob(@RequestBody @Validated DispatchJobDTO dispatchJob) { + + // 创建可执行的任务 + ThreadPoolExecutor threadPool = ThreadPoolCache.createThreadPool(dispatchJob.getTaskId(), dispatchJob.getParallelNum()); + + ListeningExecutorService decorator = MoreExecutors.listeningDecorator(threadPool); + + JobContext jobContext = new JobContext(); + jobContext.setJobId(dispatchJob.getJobId()); + jobContext.setTaskId(dispatchJob.getTaskId()); + jobContext.setGroupName(dispatchJob.getGroupName()); + + String executorName = dispatchJob.getExecutorName(); + JobExecutorInfo jobExecutorInfo = JobExecutorInfoCache.get(executorName); + + // 执行任务 + ListenableFuture submit = decorator.submit(() -> { + return (ExecuteResult) ReflectionUtils.invokeMethod(jobExecutorInfo.getMethod(), jobExecutorInfo.getExecutor(), jobContext); + }); + + Futures.addCallback(submit, new FutureCallback() { + @Override + public void onSuccess(ExecuteResult result) { + // 上报执行成功 + } + + @Override + public void onFailure(Throwable t) { + // 上报执行失败 + } + }, threadPool); + + + return new Result<>(Boolean.TRUE); + } + + @PostMapping("/interrupt/v1") + public Result dispatchJob(@RequestBody @Validated InterruptJobDTO interruptJob) { + + return new Result<>(Boolean.TRUE); + } +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/ExecuteResult.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/ExecuteResult.java new file mode 100644 index 00000000..14f18907 --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/ExecuteResult.java @@ -0,0 +1,9 @@ +package com.aizuda.easy.retry.client.job.core.dto; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-27 09:43 + */ +public class ExecuteResult { + +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java new file mode 100644 index 00000000..0e7a24a0 --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobContext.java @@ -0,0 +1,17 @@ +package com.aizuda.easy.retry.client.job.core.dto; + +import lombok.Data; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-27 09:40 + */ +@Data +public class JobContext { + + private Long jobId; + + private Long taskId; + + private String groupName; +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java new file mode 100644 index 00000000..b04b1bba --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/dto/JobExecutorInfo.java @@ -0,0 +1,22 @@ +package com.aizuda.easy.retry.client.job.core.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.lang.reflect.Method; + +/** + * @author www.byteblogs.com + * @date 2023-09-27 22:34:29 + * @since 2.4.0 + */ +@Data +@AllArgsConstructor +public class JobExecutorInfo { + + private final String executorName; + + private final Method method; + + Object executor; +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/AbstractIJobExecutor.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/AbstractIJobExecutor.java new file mode 100644 index 00000000..2255b37d --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/AbstractIJobExecutor.java @@ -0,0 +1,26 @@ +package com.aizuda.easy.retry.client.job.core.handler; + +import com.aizuda.easy.retry.client.job.core.IJobExecutor; +import com.aizuda.easy.retry.client.job.core.dto.ExecuteResult; +import com.aizuda.easy.retry.client.job.core.dto.JobContext; + +/** + * 广播模式 + * + * @author: www.byteblogs.com + * @date : 2023-09-27 09:48 + * @since 2.4.0 + */ +public abstract class AbstractIJobExecutor implements IJobExecutor { + + @Override + public ExecuteResult call() throws Exception { + + JobContext jobContext = new JobContext(); + ExecuteResult executeResult = jobExecute(jobContext); + + return executeResult; + } + + protected abstract ExecuteResult jobExecute(JobContext jobContext); +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/SimpleIJobExecutor.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/SimpleIJobExecutor.java new file mode 100644 index 00000000..44389b6f --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/handler/SimpleIJobExecutor.java @@ -0,0 +1,17 @@ +package com.aizuda.easy.retry.client.job.core.handler; + +import com.aizuda.easy.retry.client.job.core.dto.ExecuteResult; +import com.aizuda.easy.retry.client.job.core.dto.JobContext; + +/** + * @author www.byteblogs.com + * @date 2023-09-27 22:20:36 + * @since 2.4.0 + */ +public abstract class SimpleIJobExecutor extends AbstractIJobExecutor { + + @Override + public ExecuteResult jobExecute(JobContext jobContext) { + return null; + } +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/JobExecutorRegistrar.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/JobExecutorRegistrar.java new file mode 100644 index 00000000..5cdc4f43 --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/JobExecutorRegistrar.java @@ -0,0 +1,49 @@ +package com.aizuda.easy.retry.client.job.core.register; + +import com.aizuda.easy.retry.client.common.Lifecycle; +import com.aizuda.easy.retry.client.common.exception.EasyRetryClientException; +import com.aizuda.easy.retry.client.job.core.Scanner; +import com.aizuda.easy.retry.client.job.core.cache.JobExecutorInfoCache; +import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Objects; + +/** + * @author: www.byteblogs.com + * @date : 2022-02-10 09:12 + */ +@Component +public class JobExecutorRegistrar implements Lifecycle { + + @Autowired + private List scanners; + + public void registerRetryHandler(JobExecutorInfo jobExecutorInfo) { + + if (JobExecutorInfoCache.isExisted(jobExecutorInfo.getExecutorName())) { + throw new EasyRetryClientException("不允许executorName重复的", jobExecutorInfo.getExecutorName()); + } + + JobExecutorInfoCache.put(jobExecutorInfo); + } + + public void registerRetryHandler(List contextList) { + for (JobExecutorInfo jobExecutorInfo : contextList) { + registerRetryHandler(jobExecutorInfo); + } + } + + @Override + public void start() { + for (Scanner scanner : scanners) { + this.registerRetryHandler(scanner.doScan()); + } + } + + @Override + public void close() { + } +} diff --git a/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java new file mode 100644 index 00000000..a8be055c --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/src/main/java/com/aizuda/easy/retry/client/job/core/register/scan/JobExecutorScanner.java @@ -0,0 +1,112 @@ +package com.aizuda.easy.retry.client.job.core.register.scan; + +import com.aizuda.easy.retry.client.job.core.IJobExecutor; +import com.aizuda.easy.retry.client.job.core.Scanner; +import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor; +import com.aizuda.easy.retry.client.job.core.cache.JobExecutorInfoCache; +import com.aizuda.easy.retry.client.job.core.dto.JobExecutorInfo; +import com.aizuda.easy.retry.common.core.log.LogUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.core.MethodIntrospector; +import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.stereotype.Component; +import org.springframework.util.ReflectionUtils; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-27 16:55 + */ +@Component +@Slf4j +public class JobExecutorScanner implements Scanner, ApplicationContextAware { + + public ApplicationContext applicationContext; + + @Override + public List doScan() { + return scanRetryAbleMethod(); + } + + private List scanRetryAbleMethod() { + + List retryerInfoList = new ArrayList<>(); + String[] beanDefinitionNames = applicationContext.getBeanNamesForType(Object.class, false, true); + for (String beanDefinitionName : beanDefinitionNames) { + Object bean = applicationContext.getBean(beanDefinitionName); + + Map annotatedMethods = null; + try { + annotatedMethods = MethodIntrospector.selectMethods(bean.getClass(), + (MethodIntrospector.MetadataLookup) method -> AnnotatedElementUtils + .findMergedAnnotation(method, JobExecutor.class)); + } catch (Throwable ex) { + LogUtils.error(log, "{} JobExecutor加载异常:{}", beanDefinitionName, ex); + } + + if (annotatedMethods == null || annotatedMethods.isEmpty()) { + continue; + } + + String executorClassName = bean.getClass().getName(); + + // 通过实现接口进行注册 + if (bean.getClass().isAssignableFrom(IJobExecutor.class)) { + IJobExecutor iJobExecutor = (IJobExecutor) bean; + String executorName = iJobExecutor.getName(); + if (JobExecutorInfoCache.isExisted(executorName)) { + retryerInfoList.add(new JobExecutorInfo(executorClassName, ReflectionUtils.findMethod(bean.getClass(), "jobExecute"), bean)); + } + + } + + // 扫描类的注解 + JobExecutor jobExecutor = bean.getClass().getAnnotation(JobExecutor.class); + if (Objects.nonNull(jobExecutor)) { + String executorName = jobExecutor.name(); + if (JobExecutorInfoCache.isExisted(executorName)) { + JobExecutorInfo jobExecutorInfo = + new JobExecutorInfo( + executorName, + ReflectionUtils.findMethod(bean.getClass(), jobExecutor.method()), + bean + ); + retryerInfoList.add(jobExecutorInfo); + } + + } + + // 扫描方法上的注解 + for (Map.Entry methodEntry : annotatedMethods.entrySet()) { + Method executeMethod = methodEntry.getKey(); + jobExecutor = methodEntry.getValue(); + if (JobExecutorInfoCache.isExisted(jobExecutor.name())) { + continue; + } + + JobExecutorInfo jobExecutorInfo = + new JobExecutorInfo( + jobExecutor.name(), + executeMethod, + bean + ); + retryerInfoList.add(jobExecutorInfo); + } + } + + return retryerInfoList; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } +} diff --git a/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/DispatchJobDTO.java b/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/DispatchJobDTO.java index 14ec2e34..110b2b89 100644 --- a/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/DispatchJobDTO.java +++ b/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/DispatchJobDTO.java @@ -21,4 +21,14 @@ public class DispatchJobDTO { @NotBlank(message = "group 不能为空") private String groupName; + @NotBlank(message = "parallelNum 不能为空") + private Integer parallelNum; + + @NotNull(message = "executorType 不能为空") + private Integer executorType; + + @NotBlank(message = "executorName 不能为空") + private String executorName; + + }