From 8a0a86bb242272f9252b62207b3f16268f1bae0a Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Tue, 26 Sep 2023 15:55:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=202.4.0=201.=20=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=B0=83=E5=BA=A6=E6=B5=81=E7=A8=8B=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retry/client/core/client/NettyClient.java | 33 ---------- .../spring-configuration-metadata.json | 31 --------- easy-retry-client/.gitignore | 38 +++++++++++ .../easy-retry-client-common/.gitignore | 38 +++++++++++ .../easy-retry-client-common/pom.xml | 42 ++++++++++++ .../client/common/client}/Lifecycle.java | 2 +- .../client/common/client/NettyClient.java | 28 ++++++++ .../common/client}/annotation/Mapping.java | 4 +- .../client}/cache/GroupVersionCache.java | 2 +- .../client}/config/EasyRetryProperties.java | 2 +- .../exception/EasyRetryClientException.java | 38 +++++++++++ .../EasyRetryClientTimeOutException.java | 38 +++++++++++ .../common}/client/netty/NettyChannel.java | 9 ++- .../client/netty/NettyHttpClientHandler.java | 12 ++-- .../client/netty/NettyHttpConnectClient.java | 6 +- .../common}/client/netty/RequestMethod.java | 2 +- .../common}/client/netty/RpcContext.java | 2 +- .../client/proxy/ClientInvokeHandler.java | 13 ++-- .../common}/client/proxy/RequestBuilder.java | 4 +- .../spring-configuration-metadata.json | 31 +++++++++ .../easy-retry-client-core}/.gitignore | 0 .../easy-retry-client-core}/pom.xml | 6 +- .../retry/client/core/ExpressionEngine.java | 0 .../client/core/IdempotentIdGenerate.java | 0 .../aizuda/easy/retry/client/core/Report.java | 0 .../retry/client/core/RetryArgSerializer.java | 0 .../easy/retry/client/core/RetryExecutor.java | 0 .../client/core/RetryExecutorParameter.java | 0 .../retry/client/core/RetryOperations.java | 0 .../client/core/RetrySiteSnapshotContext.java | 0 .../easy/retry/client/core/Scanner.java | 0 .../annotation/ExecutorMethodRegister.java | 0 .../client/core/annotation/Retryable.java | 0 .../client/core/cache/RetryerInfoCache.java | 0 .../core/callback/RetryCompleteCallback.java | 0 .../callback/SimpleRetryCompleteCallback.java | 0 .../retry/client/core/client/NettyClient.java | 27 ++++++++ .../client/core/client/RetryEndPoint.java | 0 .../client/core/event/EasyRetryListener.java | 0 .../core/event/SimpleEasyRetryListener.java | 0 .../exception/EasyRetryClientException.java | 0 .../EasyRetryClientTimeOutException.java | 0 .../core/executor/AbstractRetryExecutor.java | 0 .../core/executor/GuavaRetryExecutor.java | 0 .../expression/AbstractExpressionEngine.java | 0 .../expression/AviatorExpressionEngine.java | 0 .../core/expression/QLExpressEngine.java | 0 .../core/expression/SpELExpressionEngine.java | 0 .../generator/SimpleIdempotentIdGenerate.java | 0 .../core/init/EasyRetryEndListener.java | 1 - .../core/init/EasyRetryStartListener.java | 2 - .../intercepter/EasyRetryInterceptor.java | 2 - .../intercepter/EasyRetryPointcutAdvisor.java | 0 .../client/core/intercepter/HeaderAspect.java | 0 .../core/intercepter/RetrySiteSnapshot.java | 0 .../ThreadLockRetrySiteSnapshotContext.java | 0 .../core/loader/EasyRetrySpiLoader.java | 0 .../core/plugin/RequestHeaderPlugins.java | 0 .../core/plugin/ResponseHeaderPlugins.java | 0 .../core/register/RetryableRegistrar.java | 0 .../register/scan/ExecutorMethodScanner.java | 0 .../core/register/scan/RetryableScanner.java | 0 .../client/core/report/AbstractReport.java | 0 .../retry/client/core/report/AsyncReport.java | 0 .../client/core/report/ReportListener.java | 0 .../retry/client/core/report/SyncReport.java | 2 - .../core/retryer/EasyRetryTemplate.java | 0 .../retryer/RetryTaskTemplateBuilder.java | 0 .../retry/client/core/retryer/RetryType.java | 0 .../client/core/retryer/RetryerInfo.java | 0 .../core/retryer/RetryerResultContext.java | 0 .../core/serializer/HessianSerializer.java | 0 .../core/serializer/JacksonSerializer.java | 0 .../strategy/AbstractRetryStrategies.java | 0 .../strategy/ExecutorAnnotationMethod.java | 0 .../client/core/strategy/ExecutorMethod.java | 0 .../core/strategy/LocalRetryStrategies.java | 4 -- .../core/strategy/ManualRetryStrategies.java | 0 .../core/strategy/RemoteRetryStrategies.java | 0 .../client/core/strategy/RetryResult.java | 0 .../client/core/strategy/RetryStrategy.java | 0 .../client/core/window/RetryLeapArray.java | 0 .../client/core/window/SlidingWindow.java | 0 .../main/resources/META-INF/spring.factories | 0 .../spring-configuration-metadata.json | 31 +++++++++ .../easy-retry-client-job-core/.gitignore | 38 +++++++++++ .../easy-retry-client-job-core/pom.xml | 21 ++++++ easy-retry-client/pom.xml | 37 +++++++++++ .../retry/client/model/DispatchJobDTO.java | 24 +++++++ .../retry/client/model/InterruptJobDTO.java | 24 +++++++ .../datasource/persistence/po/JobTask.java | 5 ++ .../server/common/akka/ActorGenerator.java | 12 +++- .../retry/server/common/client/RpcClient.java | 8 +++ .../server/job/task/dto/TaskExecuteDTO.java | 13 ++++ .../server/job/task/enums/TaskStatusEnum.java | 52 +++++++++++++++ .../job/task/scan/JobExecutorActor.java | 41 ++++++++++-- .../job/task/scan/JobTaskPrepareActor.java | 41 +++++++++--- .../server/job/task/scan/JobTimerTask.java | 23 +++++-- .../job/task/strategy/BlockStrategies.java | 66 ++++++++++++++++--- pom.xml | 2 +- 100 files changed, 721 insertions(+), 136 deletions(-) delete mode 100644 easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java delete mode 100644 easy-retry-client-core/src/main/resources/spring-configuration-metadata.json create mode 100644 easy-retry-client/.gitignore create mode 100644 easy-retry-client/easy-retry-client-common/.gitignore create mode 100644 easy-retry-client/easy-retry-client-common/pom.xml rename {easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core => easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client}/Lifecycle.java (81%) create mode 100644 easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/NettyClient.java rename {easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core => 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-core/src/main/java/com/aizuda/easy/retry/client/core => easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client}/cache/GroupVersionCache.java (98%) rename {easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core => easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client}/config/EasyRetryProperties.java (97%) create mode 100644 easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientException.java create mode 100644 easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientTimeOutException.java rename {easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core => 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-core/src/main/java/com/aizuda/easy/retry/client/core => easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common}/client/netty/NettyHttpClientHandler.java (91%) rename {easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core => 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-core/src/main/java/com/aizuda/easy/retry/client/core => 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-core/src/main/java/com/aizuda/easy/retry/client/core => 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-core/src/main/java/com/aizuda/easy/retry/client/core => easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common}/client/proxy/ClientInvokeHandler.java (85%) rename {easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core => easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common}/client/proxy/RequestBuilder.java (92%) create mode 100644 easy-retry-client/easy-retry-client-common/src/main/resources/spring-configuration-metadata.json rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/.gitignore (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/pom.xml (93%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/ExpressionEngine.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/IdempotentIdGenerate.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/Report.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/RetryArgSerializer.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutor.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutorParameter.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/RetryOperations.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/RetrySiteSnapshotContext.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/Scanner.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/annotation/ExecutorMethodRegister.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/annotation/Retryable.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/cache/RetryerInfoCache.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/callback/RetryCompleteCallback.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/callback/SimpleRetryCompleteCallback.java (100%) create mode 100644 easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/event/EasyRetryListener.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/event/SimpleEasyRetryListener.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientException.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientTimeOutException.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/executor/AbstractRetryExecutor.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/executor/GuavaRetryExecutor.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/expression/AbstractExpressionEngine.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/expression/AviatorExpressionEngine.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/expression/QLExpressEngine.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/expression/SpELExpressionEngine.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/generator/SimpleIdempotentIdGenerate.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryEndListener.java (97%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryStartListener.java (90%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryInterceptor.java (98%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryPointcutAdvisor.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/intercepter/HeaderAspect.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/intercepter/RetrySiteSnapshot.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/intercepter/ThreadLockRetrySiteSnapshotContext.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/loader/EasyRetrySpiLoader.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/plugin/RequestHeaderPlugins.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/plugin/ResponseHeaderPlugins.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/register/RetryableRegistrar.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/register/scan/ExecutorMethodScanner.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/register/scan/RetryableScanner.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/report/AbstractReport.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/report/AsyncReport.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/report/ReportListener.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/report/SyncReport.java (95%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/retryer/EasyRetryTemplate.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryTaskTemplateBuilder.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryType.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerInfo.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerResultContext.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/serializer/HessianSerializer.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/serializer/JacksonSerializer.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorAnnotationMethod.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorMethod.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/LocalRetryStrategies.java (97%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/ManualRetryStrategies.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/RemoteRetryStrategies.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryResult.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryStrategy.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/window/RetryLeapArray.java (100%) rename {easy-retry-client-core => easy-retry-client/easy-retry-client-core}/src/main/java/com/aizuda/easy/retry/client/core/window/SlidingWindow.java (100%) create mode 100644 easy-retry-client/easy-retry-client-core/src/main/resources/META-INF/spring.factories create mode 100644 easy-retry-client/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json create mode 100644 easy-retry-client/easy-retry-client-job-core/.gitignore create mode 100644 easy-retry-client/easy-retry-client-job-core/pom.xml create mode 100644 easy-retry-client/pom.xml create mode 100644 easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/DispatchJobDTO.java create mode 100644 easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/InterruptJobDTO.java create mode 100644 easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/dto/TaskExecuteDTO.java create mode 100644 easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/enums/TaskStatusEnum.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java b/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java deleted file mode 100644 index 9679b772..00000000 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.aizuda.easy.retry.client.core.client; - -import com.aizuda.easy.retry.client.core.annotation.Mapping; -import com.aizuda.easy.retry.client.core.client.netty.RequestMethod; -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 java.util.List; - -import static com.aizuda.easy.retry.common.core.constant.SystemConstants.HTTP_PATH.BATCH_REPORT; -import static com.aizuda.easy.retry.common.core.constant.SystemConstants.HTTP_PATH.BEAT; -import static com.aizuda.easy.retry.common.core.constant.SystemConstants.HTTP_PATH.CONFIG; - -/** - * netty 客户端请求类 - * - * @author: www.byteblogs.com - * @date : 2023-05-11 21:28 - * @since 1.3.0 - */ -public interface NettyClient { - - @Mapping(method = RequestMethod.GET, path = CONFIG) - Result getConfig(Integer version); - - @Mapping(method = RequestMethod.GET, path = BEAT) - Result beat(String mark); - - @Mapping(method = RequestMethod.POST, path = BATCH_REPORT) - NettyResult reportRetryInfo(List list); - -} diff --git a/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json b/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json deleted file mode 100644 index df1893a8..00000000 --- a/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "groups": [ - { - "name": "easy-retry", - "type": "com.aizuda.easy.retry.client.core.config.EasyRetryProperties", - "sourceType": "com.aizuda.easy.retry.client.core.config.EasyRetryProperties" - }, - { - "name": "easy-retry.server", - "sourceMethod": "getServer()", - "type": "com.aizuda.easy.retry.client.core.config.EasyRetryProperties$ServerConfig", - "sourceType": "com.aizuda.easy.retry.client.core.config.EasyRetryProperties" - } - ], - "properties": [ - { - "name": "easy-retry.server.host", - "type": "java.lang.String", - "defaultValue": "127.0.0.1", - "description": "服务端的地址,若服务端集群部署则此处配置域名", - "sourceType": "com.aizuda.easy.retry.client.core.config.EasyRetryProperties$ServerConfig" - }, - { - "name": "easy-retry.server.port", - "type": "com.aizuda.easy.retry.client.core.config.EasyRetryProperties.ServerConfig", - "sourceType": "com.aizuda.easy.retry.client.core.config.EasyRetryProperties", - "description": "服务端netty的端口号", - "defaultValue": "1788" - } - ] -} \ No newline at end of file diff --git a/easy-retry-client/.gitignore b/easy-retry-client/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/easy-retry-client/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/easy-retry-client/easy-retry-client-common/.gitignore b/easy-retry-client/easy-retry-client-common/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/easy-retry-client/easy-retry-client-common/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/easy-retry-client/easy-retry-client-common/pom.xml b/easy-retry-client/easy-retry-client-common/pom.xml new file mode 100644 index 00000000..c6225214 --- /dev/null +++ b/easy-retry-client/easy-retry-client-common/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + com.aizuda + easy-retry-client + ${revision} + ../pom.xml + + + + easy-retry-client-common + + + 8 + 8 + UTF-8 + + + + io.netty + netty-all + + + org.springframework.boot + spring-boot-starter-web + provided + + + org.projectlombok + lombok + true + + + com.aizuda + easy-retry-common-core + + + + diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Lifecycle.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/Lifecycle.java similarity index 81% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Lifecycle.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/Lifecycle.java index 63d4a6e8..0bcdb1ae 100644 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Lifecycle.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/Lifecycle.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.core; +package com.aizuda.easy.retry.client.common.client; /** * 组件生命周期 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/client/NettyClient.java new file mode 100644 index 00000000..531cb481 --- /dev/null +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/NettyClient.java @@ -0,0 +1,28 @@ +package com.aizuda.easy.retry.client.common.client; + +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.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 客户端请求类 + * + * @author: www.byteblogs.com + * @date : 2023-05-11 21:28 + * @since 1.3.0 + */ +public interface NettyClient { + + @Mapping(method = RequestMethod.GET, path = HTTP_PATH.CONFIG) + Result getConfig(Integer version); + + @Mapping(method = RequestMethod.GET, path = HTTP_PATH.BEAT) + Result beat(String mark); + + +} diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/Mapping.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/annotation/Mapping.java similarity index 80% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/Mapping.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/annotation/Mapping.java index 4ea8fe16..17588d3b 100644 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/Mapping.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/annotation/Mapping.java @@ -1,6 +1,6 @@ -package com.aizuda.easy.retry.client.core.annotation; +package com.aizuda.easy.retry.client.common.client.annotation; -import com.aizuda.easy.retry.client.core.client.netty.RequestMethod; +import com.aizuda.easy.retry.client.common.client.netty.RequestMethod; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/GroupVersionCache.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/cache/GroupVersionCache.java similarity index 98% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/GroupVersionCache.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/cache/GroupVersionCache.java index df64fb14..382b4743 100644 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/GroupVersionCache.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/cache/GroupVersionCache.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.core.cache; +package com.aizuda.easy.retry.client.common.client.cache; import com.aizuda.easy.retry.client.core.Lifecycle; import com.aizuda.easy.retry.client.core.client.NettyClient; diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/config/EasyRetryProperties.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/config/EasyRetryProperties.java similarity index 97% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/config/EasyRetryProperties.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/config/EasyRetryProperties.java index dda2b5ab..858d0f41 100644 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/config/EasyRetryProperties.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/config/EasyRetryProperties.java @@ -1,4 +1,4 @@ -package com.aizuda.easy.retry.client.core.config; +package com.aizuda.easy.retry.client.common.client.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/client/exception/EasyRetryClientException.java new file mode 100644 index 00000000..37365df0 --- /dev/null +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientException.java @@ -0,0 +1,38 @@ +package com.aizuda.easy.retry.client.common.client.exception; + +import com.aizuda.easy.retry.common.core.exception.BaseEasyRetryException; + +/** + * @author: www.byteblogs.com + * @date : 2022-03-03 14:49 + */ +public class EasyRetryClientException extends BaseEasyRetryException { + + public EasyRetryClientException(String message) { + super(message); + } + + public EasyRetryClientException(String message, Throwable cause) { + super(message, cause); + } + + public EasyRetryClientException(Throwable cause) { + super(cause); + } + + public EasyRetryClientException(String message, Object... arguments) { + super(message, arguments); + } + + public EasyRetryClientException(String message, Object[] arguments, Throwable cause) { + super(message, arguments, cause); + } + + public EasyRetryClientException(String message, Object argument, Throwable cause) { + super(message, argument, cause); + } + + public EasyRetryClientException(String message, Object argument) { + super(message, argument); + } +} 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/client/exception/EasyRetryClientTimeOutException.java new file mode 100644 index 00000000..876c9e02 --- /dev/null +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/exception/EasyRetryClientTimeOutException.java @@ -0,0 +1,38 @@ +package com.aizuda.easy.retry.client.common.client.exception; + +import com.aizuda.easy.retry.common.core.exception.BaseEasyRetryException; + +/** + * @author: www.byteblogs.com + * @date : 2022-03-03 14:49 + */ +public class EasyRetryClientTimeOutException extends BaseEasyRetryException { + + public EasyRetryClientTimeOutException(String message) { + super(message); + } + + public EasyRetryClientTimeOutException(String message, Throwable cause) { + super(message, cause); + } + + public EasyRetryClientTimeOutException(Throwable cause) { + super(cause); + } + + public EasyRetryClientTimeOutException(String message, Object... arguments) { + super(message, arguments); + } + + public EasyRetryClientTimeOutException(String message, Object[] arguments, Throwable cause) { + super(message, arguments, cause); + } + + public EasyRetryClientTimeOutException(String message, Object argument, Throwable cause) { + super(message, argument, cause); + } + + public EasyRetryClientTimeOutException(String message, Object argument) { + super(message, argument); + } +} diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/netty/NettyChannel.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyChannel.java similarity index 93% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/netty/NettyChannel.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyChannel.java index 1a257922..ba370ba3 100644 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/netty/NettyChannel.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyChannel.java @@ -1,8 +1,8 @@ -package com.aizuda.easy.retry.client.core.client.netty; +package com.aizuda.easy.retry.client.common.client.netty; import cn.hutool.core.util.IdUtil; -import com.aizuda.easy.retry.client.core.cache.GroupVersionCache; -import com.aizuda.easy.retry.client.core.config.EasyRetryProperties; +import cn.hutool.core.util.StrUtil; +import com.aizuda.easy.retry.client.common.client.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; @@ -16,7 +16,6 @@ import io.netty.handler.codec.http.HttpHeaderValues; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpVersion; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; import org.springframework.boot.autoconfigure.web.ServerProperties; import java.nio.charset.StandardCharsets; @@ -79,7 +78,7 @@ public class NettyChannel { String host = easyRetryProperties.getHost(); // 获取客户端指定的IP地址 - if (StringUtils.isBlank(host)) { + if (StrUtil.isBlank(host)) { host = HOST; } diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/netty/NettyHttpClientHandler.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpClientHandler.java similarity index 91% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/netty/NettyHttpClientHandler.java rename to easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpClientHandler.java index 6467a455..04d6dedb 100644 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/netty/NettyHttpClientHandler.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/client/netty/NettyHttpClientHandler.java @@ -1,10 +1,8 @@ -package com.aizuda.easy.retry.client.core.client.netty; +package com.aizuda.easy.retry.client.common.client.netty; -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.common.core.constant.SystemConstants; -import com.aizuda.easy.retry.common.core.context.SpringContext; +import com.aizuda.easy.retry.client.common.client.proxy.RequestBuilder; +import com.aizuda.easy.retry.client.common.client.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; import com.aizuda.easy.retry.common.core.util.JsonUtil; @@ -112,7 +110,7 @@ public class NettyHttpClientHandler extends SimpleChannelInboundHandler4.0.0 com.aizuda - easy-retry + easy-retry-client ${revision} ../pom.xml @@ -75,6 +75,10 @@ com.aizuda easy-retry-common-client-api + + com.aizuda + easy-retry-client-common + diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/ExpressionEngine.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/ExpressionEngine.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/ExpressionEngine.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/ExpressionEngine.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/IdempotentIdGenerate.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/IdempotentIdGenerate.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/IdempotentIdGenerate.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/IdempotentIdGenerate.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Report.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Report.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Report.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Report.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryArgSerializer.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryArgSerializer.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryArgSerializer.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryArgSerializer.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutor.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutor.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutor.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutor.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutorParameter.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutorParameter.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutorParameter.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryExecutorParameter.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryOperations.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryOperations.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryOperations.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetryOperations.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetrySiteSnapshotContext.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetrySiteSnapshotContext.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetrySiteSnapshotContext.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/RetrySiteSnapshotContext.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Scanner.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Scanner.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Scanner.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/Scanner.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/ExecutorMethodRegister.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/ExecutorMethodRegister.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/ExecutorMethodRegister.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/ExecutorMethodRegister.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/Retryable.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/Retryable.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/Retryable.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/annotation/Retryable.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/RetryerInfoCache.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/RetryerInfoCache.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/RetryerInfoCache.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/cache/RetryerInfoCache.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/RetryCompleteCallback.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/RetryCompleteCallback.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/RetryCompleteCallback.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/RetryCompleteCallback.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/SimpleRetryCompleteCallback.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/SimpleRetryCompleteCallback.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/SimpleRetryCompleteCallback.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/callback/SimpleRetryCompleteCallback.java 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 new file mode 100644 index 00000000..dbee1bb1 --- /dev/null +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/NettyClient.java @@ -0,0 +1,27 @@ +package com.aizuda.easy.retry.client.core.client; + +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; + + +/** + * netty 客户端请求类 + * + * @author: www.byteblogs.com + * @date : 2023-05-11 21:28 + * @since 1.3.0 + */ +public interface NettyClient { + + @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-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/EasyRetryListener.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/EasyRetryListener.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/EasyRetryListener.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/EasyRetryListener.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/SimpleEasyRetryListener.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/SimpleEasyRetryListener.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/SimpleEasyRetryListener.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/event/SimpleEasyRetryListener.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientException.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientException.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientException.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientException.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientTimeOutException.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientTimeOutException.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientTimeOutException.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/exception/EasyRetryClientTimeOutException.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/AbstractRetryExecutor.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/AbstractRetryExecutor.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/AbstractRetryExecutor.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/AbstractRetryExecutor.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/GuavaRetryExecutor.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/GuavaRetryExecutor.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/GuavaRetryExecutor.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/executor/GuavaRetryExecutor.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AbstractExpressionEngine.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AbstractExpressionEngine.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AbstractExpressionEngine.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AbstractExpressionEngine.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AviatorExpressionEngine.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AviatorExpressionEngine.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AviatorExpressionEngine.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/AviatorExpressionEngine.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/QLExpressEngine.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/QLExpressEngine.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/QLExpressEngine.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/QLExpressEngine.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/SpELExpressionEngine.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/SpELExpressionEngine.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/SpELExpressionEngine.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/expression/SpELExpressionEngine.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/generator/SimpleIdempotentIdGenerate.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/generator/SimpleIdempotentIdGenerate.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/generator/SimpleIdempotentIdGenerate.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/generator/SimpleIdempotentIdGenerate.java diff --git a/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 similarity index 97% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryEndListener.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryEndListener.java index 61984778..ad0532dd 100644 --- a/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 @@ -8,7 +8,6 @@ import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextClosedEvent; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.List; /** diff --git a/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 similarity index 90% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryStartListener.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/init/EasyRetryStartListener.java index 80ac3ccf..f18b924d 100644 --- a/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 @@ -8,8 +8,6 @@ import org.slf4j.helpers.MessageFormatter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; -import org.springframework.boot.ConfigurableBootstrapContext; -import org.springframework.boot.SpringApplicationRunListener; import org.springframework.stereotype.Component; import java.util.List; diff --git a/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 similarity index 98% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryInterceptor.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryInterceptor.java index 8da4deca..f5c434a9 100644 --- a/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 @@ -25,8 +25,6 @@ import lombok.extern.slf4j.Slf4j; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.springframework.aop.AfterAdvice; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.Ordered; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.env.StandardEnvironment; diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryPointcutAdvisor.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryPointcutAdvisor.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryPointcutAdvisor.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/EasyRetryPointcutAdvisor.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/HeaderAspect.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/HeaderAspect.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/HeaderAspect.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/HeaderAspect.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/RetrySiteSnapshot.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/RetrySiteSnapshot.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/RetrySiteSnapshot.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/RetrySiteSnapshot.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/ThreadLockRetrySiteSnapshotContext.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/ThreadLockRetrySiteSnapshotContext.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/ThreadLockRetrySiteSnapshotContext.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/intercepter/ThreadLockRetrySiteSnapshotContext.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/loader/EasyRetrySpiLoader.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/loader/EasyRetrySpiLoader.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/loader/EasyRetrySpiLoader.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/loader/EasyRetrySpiLoader.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/RequestHeaderPlugins.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/RequestHeaderPlugins.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/RequestHeaderPlugins.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/RequestHeaderPlugins.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/ResponseHeaderPlugins.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/ResponseHeaderPlugins.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/ResponseHeaderPlugins.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/plugin/ResponseHeaderPlugins.java diff --git a/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 similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/RetryableRegistrar.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/RetryableRegistrar.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/ExecutorMethodScanner.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/ExecutorMethodScanner.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/ExecutorMethodScanner.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/ExecutorMethodScanner.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/RetryableScanner.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/RetryableScanner.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/RetryableScanner.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/register/scan/RetryableScanner.java diff --git a/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 similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AbstractReport.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AbstractReport.java diff --git a/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 similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AsyncReport.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/AsyncReport.java diff --git a/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 similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/ReportListener.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/ReportListener.java diff --git a/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 similarity index 95% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/SyncReport.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/report/SyncReport.java index 5c0c0db4..a541b424 100644 --- a/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 @@ -2,7 +2,6 @@ package com.aizuda.easy.retry.client.core.report; 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.intercepter.RetrySiteSnapshot; 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; @@ -11,7 +10,6 @@ import com.aizuda.easy.retry.server.model.dto.RetryTaskDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.Arrays; import java.util.Collections; import java.util.concurrent.TimeUnit; diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/EasyRetryTemplate.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/EasyRetryTemplate.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/EasyRetryTemplate.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/EasyRetryTemplate.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryTaskTemplateBuilder.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryTaskTemplateBuilder.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryTaskTemplateBuilder.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryTaskTemplateBuilder.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryType.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryType.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryType.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryType.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerInfo.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerInfo.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerInfo.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerInfo.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerResultContext.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerResultContext.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerResultContext.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/retryer/RetryerResultContext.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/HessianSerializer.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/HessianSerializer.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/HessianSerializer.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/HessianSerializer.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/JacksonSerializer.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/JacksonSerializer.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/JacksonSerializer.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/serializer/JacksonSerializer.java diff --git a/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 similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorAnnotationMethod.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorAnnotationMethod.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorAnnotationMethod.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorAnnotationMethod.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorMethod.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorMethod.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorMethod.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ExecutorMethod.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/LocalRetryStrategies.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/LocalRetryStrategies.java similarity index 97% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/LocalRetryStrategies.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/LocalRetryStrategies.java index 64b6186e..fa39d78a 100644 --- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/LocalRetryStrategies.java +++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/LocalRetryStrategies.java @@ -1,9 +1,7 @@ package com.aizuda.easy.retry.client.core.strategy; -import cn.hutool.core.util.IdUtil; import com.aizuda.easy.retry.client.core.RetryExecutor; import com.aizuda.easy.retry.client.core.RetryExecutorParameter; -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.exception.EasyRetryClientException; import com.aizuda.easy.retry.client.core.intercepter.RetrySiteSnapshot; @@ -12,14 +10,12 @@ import com.aizuda.easy.retry.client.core.retryer.RetryerInfo; import com.aizuda.easy.retry.client.core.retryer.RetryerResultContext; import com.aizuda.easy.retry.common.core.enums.RetryResultStatusEnum; import com.aizuda.easy.retry.common.core.log.LogUtils; -import com.aizuda.easy.retry.common.core.model.EasyRetryHeaders; import com.github.rholder.retry.Attempt; import com.github.rholder.retry.RetryListener; import com.github.rholder.retry.StopStrategies; import com.github.rholder.retry.StopStrategy; import com.github.rholder.retry.WaitStrategies; import com.github.rholder.retry.WaitStrategy; -import com.google.common.base.Predicate; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ManualRetryStrategies.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ManualRetryStrategies.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ManualRetryStrategies.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/ManualRetryStrategies.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RemoteRetryStrategies.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RemoteRetryStrategies.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RemoteRetryStrategies.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RemoteRetryStrategies.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryResult.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryResult.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryResult.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryResult.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryStrategy.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryStrategy.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryStrategy.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/RetryStrategy.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/RetryLeapArray.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/RetryLeapArray.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/RetryLeapArray.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/RetryLeapArray.java diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/SlidingWindow.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/SlidingWindow.java similarity index 100% rename from easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/SlidingWindow.java rename to easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/window/SlidingWindow.java diff --git a/easy-retry-client/easy-retry-client-core/src/main/resources/META-INF/spring.factories b/easy-retry-client/easy-retry-client-core/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..e69de29b 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 new file mode 100644 index 00000000..55610953 --- /dev/null +++ b/easy-retry-client/easy-retry-client-core/src/main/resources/spring-configuration-metadata.json @@ -0,0 +1,31 @@ +{ + "groups": [ + { + "name": "easy-retry", + "type": "com.aizuda.easy.retry.client.common.client.config.EasyRetryProperties", + "sourceType": "com.aizuda.easy.retry.client.common.client.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" + } + ], + "properties": [ + { + "name": "easy-retry.server.host", + "type": "java.lang.String", + "defaultValue": "127.0.0.1", + "description": "服务端的地址,若服务端集群部署则此处配置域名", + "sourceType": "com.aizuda.easy.retry.client.common.client.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", + "description": "服务端netty的端口号", + "defaultValue": "1788" + } + ] +} diff --git a/easy-retry-client/easy-retry-client-job-core/.gitignore b/easy-retry-client/easy-retry-client-job-core/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/easy-retry-client/easy-retry-client-job-core/pom.xml b/easy-retry-client/easy-retry-client-job-core/pom.xml new file mode 100644 index 00000000..eebbf81c --- /dev/null +++ b/easy-retry-client/easy-retry-client-job-core/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + com.aizuda + easy-retry-client + ${revision} + ../pom.xml + + + easy-retry-client-job-core + + + 8 + 8 + UTF-8 + + + diff --git a/easy-retry-client/pom.xml b/easy-retry-client/pom.xml new file mode 100644 index 00000000..6346e9c2 --- /dev/null +++ b/easy-retry-client/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + com.aizuda + easy-retry + ${revision} + ../pom.xml + + + easy-retry-client + pom + + easy-retry-client-common + easy-retry-client-job-core + easy-retry-client-core + + + + 8 + 8 + UTF-8 + + + + + + com.aizuda + easy-retry-client-common + ${revision} + + + + + 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 new file mode 100644 index 00000000..14ec2e34 --- /dev/null +++ b/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/DispatchJobDTO.java @@ -0,0 +1,24 @@ +package com.aizuda.easy.retry.client.model; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-26 15:10 + */ +@Data +public class DispatchJobDTO { + + @NotNull(message = "jobId 不能为空") + private Long jobId; + + @NotNull(message = "taskId 不能为空") + private Long taskId; + + @NotBlank(message = "group 不能为空") + private String groupName; + +} diff --git a/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/InterruptJobDTO.java b/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/InterruptJobDTO.java new file mode 100644 index 00000000..74594e23 --- /dev/null +++ b/easy-retry-common/easy-retry-common-client-api/src/main/java/com/aizuda/easy/retry/client/model/InterruptJobDTO.java @@ -0,0 +1,24 @@ +package com.aizuda.easy.retry.client.model; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-26 15:10 + */ +@Data +public class InterruptJobDTO { + + @NotNull(message = "jobId 不能为空") + private Long jobId; + + @NotNull(message = "taskId 不能为空") + private Long taskId; + + @NotBlank(message = "group 不能为空") + private String groupName; + +} diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTask.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTask.java index 3b769390..b469ec21 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTask.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTask.java @@ -51,6 +51,11 @@ public class JobTask implements Serializable { */ private Integer taskStatus; + /** + * 客户端节点id + */ + private String hostId; + /** * 创建时间 */ diff --git a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/akka/ActorGenerator.java b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/akka/ActorGenerator.java index 888eda4f..3fc845e7 100644 --- a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/akka/ActorGenerator.java +++ b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/akka/ActorGenerator.java @@ -26,8 +26,8 @@ public class ActorGenerator { /*----------------------------------------分布式任务调度----------------------------------------*/ public static final String SCAN_JOB_ACTOR = "ScanJobActor"; - public static final String JOB_TASK_PREPARE_ACTOR = "JobTaskPrepareActor"; + public static final String JOB_EXECUTOR_ACTOR = "JobExecutorActor"; private ActorGenerator() {} @@ -130,6 +130,7 @@ public class ActorGenerator { return getNettyActorSystem().actorOf(getSpringExtension().props(REQUEST_HANDLER_ACTOR)); } + /** * Job调度准备阶段actor * @@ -139,6 +140,15 @@ public class ActorGenerator { return getJobActorSystem().actorOf(getSpringExtension().props(JOB_TASK_PREPARE_ACTOR)); } + /** + * Job任务执行阶段actor + * + * @return actor 引用 + */ + public static ActorRef jobTaskExecutorActor() { + return getJobActorSystem().actorOf(getSpringExtension().props(JOB_EXECUTOR_ACTOR)); + } + public static SpringExtension getSpringExtension() { return SpringContext.getBeanByType(SpringExtension.class); } diff --git a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/client/RpcClient.java b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/client/RpcClient.java index eaf889a3..5ba3b88a 100644 --- a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/client/RpcClient.java +++ b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/client/RpcClient.java @@ -1,7 +1,9 @@ package com.aizuda.easy.retry.server.common.client; +import com.aizuda.easy.retry.client.model.DispatchJobDTO; import com.aizuda.easy.retry.client.model.DispatchRetryDTO; import com.aizuda.easy.retry.client.model.DispatchRetryResultDTO; +import com.aizuda.easy.retry.client.model.InterruptJobDTO; import com.aizuda.easy.retry.client.model.RetryCallbackDTO; import com.aizuda.easy.retry.common.core.model.EasyRetryHeaders; import com.aizuda.easy.retry.common.core.model.Result; @@ -24,4 +26,10 @@ public interface RpcClient { @Mapping(path = "/retry/callback/v1", method = RequestMethod.POST) Result callback(@Body RetryCallbackDTO retryCallbackDTO); + @Mapping(path = "/job/interrupt/v1", method = RequestMethod.POST) + Result interrupt(@Body InterruptJobDTO interruptJobDTO); + + @Mapping(path = "/job/dispatch/v1", method = RequestMethod.POST) + Result dispatch(@Body DispatchJobDTO dispatchJobDTO); + } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/dto/TaskExecuteDTO.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/dto/TaskExecuteDTO.java new file mode 100644 index 00000000..6b9b6e48 --- /dev/null +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/dto/TaskExecuteDTO.java @@ -0,0 +1,13 @@ +package com.aizuda.easy.retry.server.job.task.dto; + +import lombok.Data; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-26 15:39 + */ +@Data +public class TaskExecuteDTO { + + private Long taskId; +} diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/enums/TaskStatusEnum.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/enums/TaskStatusEnum.java new file mode 100644 index 00000000..109c0f77 --- /dev/null +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/enums/TaskStatusEnum.java @@ -0,0 +1,52 @@ +package com.aizuda.easy.retry.server.job.task.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author: www.byteblogs.com + * @date : 2023-09-26 14:26 + */ +@AllArgsConstructor +@Getter +public enum TaskStatusEnum { + + /** + * 待处理 + */ + WAIT(10), + + /** + * 处理中 + */ + PROCESSING(20), + + /** + * 处理中 + */ + PROCESSED_SUCCESS(21), + + /** + * 处理中 + */ + PROCESSED_FAIL(22), + + /** + * 中断中 + */ + INTERRUPTING(30), + + /** + * 中断成功 + */ + INTERRUPT_SUCCESS(31), + + /** + * 中断失败 + */ + INTERRUPT_FAIL(32), + + ; + + private final int status; +} diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobExecutorActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobExecutorActor.java index ba07fb6f..fd7cdeec 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobExecutorActor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobExecutorActor.java @@ -1,9 +1,21 @@ package com.aizuda.easy.retry.server.job.task.scan; import akka.actor.AbstractActor; +import akka.actor.ActorRef; +import com.aizuda.easy.retry.client.model.DispatchJobDTO; import com.aizuda.easy.retry.common.core.log.LogUtils; +import com.aizuda.easy.retry.common.core.model.Result; import com.aizuda.easy.retry.server.common.akka.ActorGenerator; +import com.aizuda.easy.retry.server.common.cache.CacheRegisterTable; +import com.aizuda.easy.retry.server.common.client.RequestBuilder; +import com.aizuda.easy.retry.server.common.client.RpcClient; +import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo; +import com.aizuda.easy.retry.server.job.task.dto.TaskExecuteDTO; +import com.aizuda.easy.retry.template.datasource.access.AccessTemplate; +import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper; +import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -12,24 +24,43 @@ import org.springframework.stereotype.Component; * @author: www.byteblogs.com * @date : 2023-09-25 17:41 */ -@Component(ActorGenerator.SCAN_JOB_ACTOR) +@Component(ActorGenerator.JOB_EXECUTOR_ACTOR) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Slf4j public class JobExecutorActor extends AbstractActor { + @Autowired + private JobTaskMapper jobTaskMapper; + @Override public Receive createReceive() { - return receiveBuilder().match(JobContext.class, jobContext -> { + return receiveBuilder().match(TaskExecuteDTO.class, taskExecute -> { try { - doExecute(jobContext); + doExecute(taskExecute); } catch (Exception e) { - LogUtils.error(log, "job executor exception. [{}]", jobContext, e); + LogUtils.error(log, "job executor exception. [{}]", taskExecute, e); } }).build(); } - private void doExecute(final JobContext jobContext) { + private void doExecute(final TaskExecuteDTO taskExecute) { // 调度客户端 + JobTask jobTask = jobTaskMapper.selectById(taskExecute.getTaskId()); + RegisterNodeInfo registerNodeInfo = CacheRegisterTable.getServerNode(jobTask.getGroupName(), jobTask.getHostId()); + RpcClient rpcClient = RequestBuilder.newBuilder() + .hostPort(registerNodeInfo.getHostPort()) + .groupName(registerNodeInfo.getGroupName()) + .hostId(registerNodeInfo.getHostId()) + .hostIp(registerNodeInfo.getHostIp()) + .contextPath(registerNodeInfo.getContextPath()) + .client(RpcClient.class) + .build(); + + DispatchJobDTO dispatchJobDTO = new DispatchJobDTO(); + dispatchJobDTO.setJobId(jobTask.getJobId()); + dispatchJobDTO.setTaskId(jobTask.getId()); + dispatchJobDTO.setGroupName(jobTask.getGroupName()); + Result dispatch = rpcClient.dispatch(dispatchJobDTO); } } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTaskPrepareActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTaskPrepareActor.java index d9c9ccd0..6111f612 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTaskPrepareActor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTaskPrepareActor.java @@ -2,12 +2,14 @@ package com.aizuda.easy.retry.server.job.task.scan; import akka.actor.AbstractActor; import cn.hutool.core.lang.Assert; -import com.aizuda.easy.retry.common.core.enums.StatusEnum; import com.aizuda.easy.retry.server.common.akka.ActorGenerator; +import com.aizuda.easy.retry.server.common.cache.CacheRegisterTable; +import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo; import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.common.handler.ClientNodeAllocateHandler; import com.aizuda.easy.retry.server.job.task.BlockStrategy; import com.aizuda.easy.retry.server.job.task.dto.JobTaskPrepareDTO; +import com.aizuda.easy.retry.server.job.task.enums.TaskStatusEnum; import com.aizuda.easy.retry.server.job.task.strategy.BlockStrategies; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobMapper; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper; @@ -19,9 +21,13 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; +import java.time.ZoneId; +import java.util.Objects; import java.util.concurrent.TimeUnit; /** + * 调度任务准备阶段 + * * @author www.byteblogs.com * @date 2023-09-25 22:20:53 * @since @@ -30,6 +36,7 @@ import java.util.concurrent.TimeUnit; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Slf4j public class JobTaskPrepareActor extends AbstractActor { + @Autowired private JobMapper jobMapper; @Autowired @@ -50,21 +57,39 @@ public class JobTaskPrepareActor extends AbstractActor { private void doPrepare(JobTaskPrepareDTO prepare) { - Long count = jobTaskMapper.selectCount(new LambdaQueryWrapper().eq(JobTask::getTaskStatus, StatusEnum.YES.getStatus())); - if (count <= 0) { + JobTask jobTask = jobTaskMapper.selectOne(new LambdaQueryWrapper() + .eq(JobTask::getJobId, prepare.getJobId()) + .in(JobTask::getTaskStatus, + TaskStatusEnum.WAIT.getStatus(), TaskStatusEnum.INTERRUPTING.getStatus(), + TaskStatusEnum.INTERRUPTING.getStatus())); + if (Objects.isNull(jobTask)) { // 生成可执行任务 - JobTask jobTask = new JobTask(); + RegisterNodeInfo serverNode = clientNodeAllocateHandler.getServerNode(prepare.getGroupName()); + if (Objects.isNull(serverNode)) { + log.error("无可执行的客户端信息. jobId:[{}]", prepare.getJobId()); + return; + } + + jobTask = new JobTask(); + jobTask.setHostId(serverNode.getHostId()); jobTask.setJobId(prepare.getJobId()); jobTask.setGroupName(prepare.getGroupName()); - Assert.isTrue(1 == jobTaskMapper.insert(jobTask), () -> new EasyRetryServerException("新增调度任务失败.jobId:[{}]", prepare.getJobId())); + Assert.isTrue(1 == jobTaskMapper.insert(jobTask), + () -> new EasyRetryServerException("新增调度任务失败.jobId:[{}]", prepare.getJobId())); - JobContext jobContext = new JobContext(); // 进入时间轮 - JobTimerWheelHandler.register(prepare.getGroupName(), prepare.getJobId().toString(), new JobTimerTask(jobContext), 1, TimeUnit.MILLISECONDS); + JobContext jobContext = new JobContext(); + jobContext.setRegisterNodeInfo(serverNode); + long delay = prepare.getNextTriggerAt().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() + - System.currentTimeMillis(); + JobTimerWheelHandler.register(prepare.getGroupName(), prepare.getJobId().toString(), + new JobTimerTask(jobTask.getId(), jobTask.getGroupName()), delay, TimeUnit.MILLISECONDS); } else { BlockStrategies.BlockStrategyContext blockStrategyContext = new BlockStrategies.BlockStrategyContext(); - BlockStrategy blockStrategy = BlockStrategies.BlockStrategyEnum.getBlockStrategy(prepare.getBlockStrategy()); + blockStrategyContext.setRegisterNodeInfo(CacheRegisterTable.getServerNode(jobTask.getGroupName(), jobTask.getHostId())); + BlockStrategy blockStrategy = BlockStrategies.BlockStrategyEnum.getBlockStrategy( + prepare.getBlockStrategy()); blockStrategy.block(blockStrategyContext); } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTimerTask.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTimerTask.java index 8b78141d..b23da9e9 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTimerTask.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/scan/JobTimerTask.java @@ -1,23 +1,36 @@ package com.aizuda.easy.retry.server.job.task.scan; +import akka.actor.ActorRef; +import com.aizuda.easy.retry.server.common.akka.ActorGenerator; +import com.aizuda.easy.retry.server.job.task.dto.TaskExecuteDTO; import io.netty.util.Timeout; import io.netty.util.TimerTask; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalDateTime; /** * @author: www.byteblogs.com * @date : 2023-09-25 17:28 */ +@AllArgsConstructor +@Slf4j public class JobTimerTask implements TimerTask { - private JobContext jobContext; - - public JobTimerTask(JobContext jobContext) { - this.jobContext = jobContext; - } + private Long taskId; + private String groupName; @Override public void run(final Timeout timeout) throws Exception { // 执行任务调度 + log.info("开始执行任务调度. 当前时间:[{}]", LocalDateTime.now()); + // 先清除时间轮的缓存 + JobTimerWheelHandler.clearCache(groupName, taskId.toString()); + + TaskExecuteDTO taskExecuteDTO = new TaskExecuteDTO(); + ActorRef actorRef = ActorGenerator.jobTaskExecutorActor(); + actorRef.tell(taskExecuteDTO, actorRef); } } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/strategy/BlockStrategies.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/strategy/BlockStrategies.java index f00674e8..2d28b7bb 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/strategy/BlockStrategies.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/strategy/BlockStrategies.java @@ -1,9 +1,16 @@ package com.aizuda.easy.retry.server.job.task.strategy; import cn.hutool.core.lang.Assert; +import com.aizuda.easy.retry.client.model.InterruptJobDTO; import com.aizuda.easy.retry.common.core.context.SpringContext; +import com.aizuda.easy.retry.common.core.enums.StatusEnum; +import com.aizuda.easy.retry.common.core.model.Result; +import com.aizuda.easy.retry.server.common.client.RequestBuilder; +import com.aizuda.easy.retry.server.common.client.RpcClient; +import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo; import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.job.task.BlockStrategy; +import com.aizuda.easy.retry.server.job.task.enums.TaskStatusEnum; import com.aizuda.easy.retry.server.job.task.scan.JobContext; import com.aizuda.easy.retry.server.job.task.scan.JobTimerTask; import com.aizuda.easy.retry.server.job.task.scan.JobTimerWheelHandler; @@ -41,10 +48,9 @@ public class BlockStrategies { } } - return null; + throw new EasyRetryServerException("不符合的阻塞策略. blockStrategy:[{}]", blockStrategy); } - } @Data @@ -52,7 +58,11 @@ public class BlockStrategies { private Long jobId; - private Job job; + private Long taskId; + + private String groupName; + + private RegisterNodeInfo registerNodeInfo; } private static final class DiscardBlockStrategy implements BlockStrategy { @@ -70,6 +80,46 @@ public class BlockStrategies { public boolean block(final BlockStrategyContext context) { log.warn("阻塞策略为覆盖. jobId:[{}]", context.getJobId()); // 向客户端发送中断执行指令 + RegisterNodeInfo registerNodeInfo = context.registerNodeInfo; + RpcClient rpcClient = RequestBuilder.newBuilder() + .hostPort(registerNodeInfo.getHostPort()) + .groupName(registerNodeInfo.getGroupName()) + .hostId(registerNodeInfo.getHostId()) + .hostIp(registerNodeInfo.getHostIp()) + .contextPath(registerNodeInfo.getContextPath()) + .client(RpcClient.class) + .build(); + + InterruptJobDTO interruptJobDTO = new InterruptJobDTO(); + interruptJobDTO.setTaskId(context.getTaskId()); + interruptJobDTO.setGroupName(context.getGroupName()); + interruptJobDTO.setJobId(context.getJobId()); + + // TODO 处理结果 + Result result = rpcClient.interrupt(interruptJobDTO); + Integer taskStatus; + if (result.getStatus() == StatusEnum.YES.getStatus() && Boolean.TRUE.equals(result.getData())) { + taskStatus = TaskStatusEnum.INTERRUPT_SUCCESS.getStatus(); + + // 生成一个新的任务 + JobTask jobTask = new JobTask(); + jobTask.setJobId(context.getJobId()); + jobTask.setGroupName(context.getGroupName()); + JobTaskMapper jobTaskMapper = SpringContext.getBeanByType(JobTaskMapper.class); + Assert.isTrue(1 == jobTaskMapper.insert(jobTask), () -> new EasyRetryServerException("新增调度任务失败.jobId:[{}]", context.getJobId())); + + JobContext jobContext = new JobContext(); + // 进入时间轮 + JobTimerWheelHandler.register(context.getGroupName(), context.getJobId().toString(), new JobTimerTask(jobTask.getJobId(), jobTask.getGroupName()), 1, TimeUnit.MILLISECONDS); + + } else { + taskStatus = TaskStatusEnum.INTERRUPT_FAIL.getStatus(); + } + + JobTaskMapper jobTaskMapper = SpringContext.getBeanByType(JobTaskMapper.class); + JobTask jobTask = new JobTask(); + jobTask.setTaskStatus(taskStatus); + Assert.isTrue(1 == jobTaskMapper.updateById(jobTask), ()-> new EasyRetryServerException("更新调度任务失败. jopId:[{}]", context.getJobId())); return true; } @@ -80,17 +130,15 @@ public class BlockStrategies { @Override public boolean block(final BlockStrategyContext context) { log.warn("阻塞策略为并行执行. jobId:[{}]", context.getJobId()); - Job job = context.getJob(); JobTask jobTask = new JobTask(); - jobTask.setJobId(job.getId()); - jobTask.setGroupName(job.getGroupName()); + jobTask.setJobId(context.getJobId()); + jobTask.setGroupName(context.getGroupName()); JobTaskMapper jobTaskMapper = SpringContext.getBeanByType(JobTaskMapper.class); - Assert.isTrue(1 == jobTaskMapper.insert(jobTask), () -> new EasyRetryServerException("新增调度任务失败.jobId:[{}]", job.getId())); + Assert.isTrue(1 == jobTaskMapper.insert(jobTask), () -> new EasyRetryServerException("新增调度任务失败.jobId:[{}]", context.getJobId())); - JobContext jobContext = new JobContext(); // 进入时间轮 - JobTimerWheelHandler.register(job.getGroupName(), job.getId().toString(), new JobTimerTask(jobContext), 1, TimeUnit.MILLISECONDS); + JobTimerWheelHandler.register(context.getGroupName(), context.getJobId().toString(), new JobTimerTask(jobTask.getJobId(), jobTask.getGroupName()), 1, TimeUnit.MILLISECONDS); return false; } diff --git a/pom.xml b/pom.xml index f384557c..2e3ed15a 100644 --- a/pom.xml +++ b/pom.xml @@ -31,11 +31,11 @@ - easy-retry-client-core easy-retry-common easy-retry-server easy-retry-client-starter easy-retry-datasource + easy-retry-client