other) {
+ return new CompareToBuilder().append(getLeft(), other.getLeft())
+ .append(getRight(), other.getRight()).toComparison();
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (obj instanceof Map.Entry, ?>) {
+ final Map.Entry, ?> other = (Map.Entry, ?>) obj;
+ return Objects.equals(getKey(), other.getKey())
+ && Objects.equals(getValue(), other.getValue());
+ }
+ return false;
+ }
+
+ /**
+ * Returns a suitable hash code.
+ * The hash code follows the definition in {@code Map.Entry}.
+ *
+ * @return the hash code
+ */
+ @Override
+ public int hashCode() {
+ return (getKey() == null ? 0 : getKey().hashCode()) ^
+ (getValue() == null ? 0 : getValue().hashCode());
+ }
+
+ /**
+ * Returns a String representation of this pair using the format {@code ($left,$right)}.
+ *
+ * @return a string describing this object, not null
+ */
+ @Override
+ public String toString() {
+ return "(" + getLeft() + ',' + getRight() + ')';
+ }
+
+ public String toString(final String format) {
+ return String.format(format, getLeft(), getRight());
+ }
+}
diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java
index cf530c73..fb0d30cc 100644
--- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java
+++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/job/RequestClientActor.java
@@ -148,7 +148,6 @@ public class RequestClientActor extends AbstractActor {
boolean retry = realJobExecutorDTO.isRetry();
return RequestBuilder.newBuilder()
.nodeInfo(registerNodeInfo)
- .namespaceId(registerNodeInfo.getNamespaceId())
.failRetry(maxRetryTimes > 0 && !retry)
.retryTimes(maxRetryTimes)
.retryInterval(realJobExecutorDTO.getRetryInterval())
diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/RealStopTaskActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/RealStopTaskActor.java
index 34ee8519..02a246dc 100644
--- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/RealStopTaskActor.java
+++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/stop/RealStopTaskActor.java
@@ -53,7 +53,6 @@ public class RealStopTaskActor extends AbstractActor {
private Result requestClient(RealStopTaskInstanceDTO realStopTaskInstanceDTO, RegisterNodeInfo registerNodeInfo) {
JobRpcClient rpcClient = RequestBuilder.newBuilder()
.nodeInfo(registerNodeInfo)
- .namespaceId(registerNodeInfo.getNamespaceId())
.failRetry(Boolean.TRUE)
.retryTimes(3)
.retryInterval(1)
diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/client/RetryRpcClient.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/client/RetryRpcClient.java
index 01ff454b..512de391 100644
--- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/client/RetryRpcClient.java
+++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/client/RetryRpcClient.java
@@ -12,6 +12,7 @@ import com.aizuda.easy.retry.server.common.client.RequestMethod;
import com.aizuda.easy.retry.server.common.client.annotation.Body;
import com.aizuda.easy.retry.server.common.client.annotation.Header;
import com.aizuda.easy.retry.server.common.client.annotation.Mapping;
+import com.aizuda.easy.retry.server.model.dto.ConfigDTO;
/**
* 调用客户端接口
@@ -31,4 +32,7 @@ public interface RetryRpcClient {
@Mapping(path = "/retry/generate/idempotent-id/v1", method = RequestMethod.POST)
Result generateIdempotentId(@Body GenerateRetryIdempotentIdDTO retryCallbackDTO);
+ @Mapping(path = "/retry/sync/version/v1")
+ Result syncConfig(@Body ConfigDTO configDTO);
+
}
diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecCallbackUnitActor.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecCallbackUnitActor.java
index a7645ee9..f1d6cd9d 100644
--- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecCallbackUnitActor.java
+++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecCallbackUnitActor.java
@@ -136,7 +136,6 @@ public class ExecCallbackUnitActor extends AbstractActor {
RetryRpcClient rpcClient = RequestBuilder.newBuilder()
.nodeInfo(serverNode)
- .namespaceId(serverNode.getNamespaceId())
.failover(Boolean.TRUE)
.routeKey(sceneConfig.getRouteKey())
.allocKey(sceneConfig.getSceneName())
diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecUnitActor.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecUnitActor.java
index 4cd01950..85bae2fc 100644
--- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecUnitActor.java
+++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/dispatch/actor/exec/ExecUnitActor.java
@@ -139,7 +139,6 @@ public class ExecUnitActor extends AbstractActor {
RetryRpcClient rpcClient = RequestBuilder.newBuilder()
.nodeInfo(serverNode)
- .namespaceId(serverNode.getNamespaceId())
.failover(Boolean.TRUE)
.allocKey(retryTask.getSceneName())
.routeKey(sceneConfig.getRouteKey())
diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/handler/ConfigVersionSyncHandler.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/handler/ConfigVersionSyncHandler.java
index bee36ceb..5ba14d9f 100644
--- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/handler/ConfigVersionSyncHandler.java
+++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/handler/ConfigVersionSyncHandler.java
@@ -1,21 +1,18 @@
package com.aizuda.easy.retry.server.retry.task.support.handler;
-import cn.hutool.core.lang.Pair;
-import com.aizuda.easy.retry.common.core.util.NetUtil;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.common.core.model.Result;
import com.aizuda.easy.retry.server.common.Lifecycle;
+import com.aizuda.easy.retry.server.common.client.RequestBuilder;
import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo;
import com.aizuda.easy.retry.server.model.dto.ConfigDTO;
import com.aizuda.easy.retry.server.common.cache.CacheRegisterTable;
+import com.aizuda.easy.retry.server.retry.task.client.RetryRpcClient;
import com.aizuda.easy.retry.server.retry.task.dto.ConfigSyncTask;
import com.aizuda.easy.retry.template.datasource.access.AccessTemplate;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
-import java.text.MessageFormat;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
@@ -29,16 +26,11 @@ import java.util.concurrent.TimeUnit;
* @since 1.6.0
*/
@Component
-@Slf4j
+@RequiredArgsConstructor
public class ConfigVersionSyncHandler implements Lifecycle, Runnable {
-
private static final LinkedBlockingQueue QUEUE = new LinkedBlockingQueue<>(256);
public Thread THREAD = null;
- @Autowired
- private RestTemplate restTemplate;
- @Autowired
- protected AccessTemplate accessTemplate;
- private static final String SYNC_VERSION_V1 = "/retry/sync/version/v1";
+ protected final AccessTemplate accessTemplate;
/**
* 添加任务
@@ -59,8 +51,8 @@ public class ConfigVersionSyncHandler implements Lifecycle, Runnable {
/**
* 同步版本
*
- * @param groupName
- * @param namespaceId
+ * @param groupName 组
+ * @param namespaceId 空间id
*/
public void syncVersion(String groupName, final String namespaceId) {
@@ -69,11 +61,11 @@ public class ConfigVersionSyncHandler implements Lifecycle, Runnable {
// 同步版本到每个客户端节点
for (final RegisterNodeInfo registerNodeInfo : serverNodeSet) {
ConfigDTO configDTO = accessTemplate.getGroupConfigAccess().getConfigInfo(groupName, namespaceId);
-
- String url = NetUtil.getUrl(registerNodeInfo.getHostIp(), registerNodeInfo.getHostPort(),
- registerNodeInfo.getContextPath());
- Result result = restTemplate.postForObject(url.concat(SYNC_VERSION_V1), configDTO, Result.class);
- EasyRetryLog.LOCAL.info("同步结果 [{}]", result);
+ RetryRpcClient rpcClient = RequestBuilder.newBuilder()
+ .nodeInfo(registerNodeInfo)
+ .client(RetryRpcClient.class)
+ .build();
+ EasyRetryLog.LOCAL.info("同步结果 [{}]", rpcClient.syncConfig(configDTO));
}
} catch (Exception e) {
EasyRetryLog.LOCAL.error("version sync error. groupName:[{}]", groupName, e);
@@ -111,8 +103,7 @@ public class ConfigVersionSyncHandler implements Lifecycle, Runnable {
try {
// 防止刷的过快,休眠1s
TimeUnit.SECONDS.sleep(1);
- } catch (InterruptedException e) {
- e.printStackTrace();
+ } catch (InterruptedException ignored) {
}
}
}
diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/retry/RetryExecutor.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/retry/RetryExecutor.java
index 97984913..14d43052 100644
--- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/retry/RetryExecutor.java
+++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/retry/RetryExecutor.java
@@ -2,9 +2,13 @@ package com.aizuda.easy.retry.server.retry.task.support.retry;
import akka.actor.ActorRef;
import cn.hutool.core.lang.Pair;
+import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
+import com.aizuda.easy.retry.server.common.util.DateUtils;
+import com.aizuda.easy.retry.server.retry.task.dto.RetryLogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.support.FilterStrategy;
import com.aizuda.easy.retry.server.retry.task.support.RetryContext;
+import com.aizuda.easy.retry.server.retry.task.support.RetryTaskConverter;
import com.aizuda.easy.retry.server.retry.task.support.StopStrategy;
import com.aizuda.easy.retry.server.common.WaitStrategy;
import lombok.extern.slf4j.Slf4j;
@@ -63,13 +67,12 @@ public class RetryExecutor {
call = callable.call();
retryContext.setCallResult(call);
} catch (Exception e) {
- log.error("客户端执行失败: [{}]", retryContext.getRetryTask());
+ RetryLogMetaDTO retryLogMetaDTO = RetryTaskConverter.INSTANCE.toLogMetaDTO(retryContext.getRetryTask());
+ retryLogMetaDTO.setTimestamp(DateUtils.toNowMilli());
+ EasyRetryLog.REMOTE.error("请求客户端执行失败. uniqueId:[{}] <|>{}<|>", retryContext.getRetryTask().getUniqueId(), e);
retryContext.setException(e);
}
- // 计算下次触发时间
-// retryContext.getRetryTask().setNextTriggerAt();
-
boolean isStop = Boolean.TRUE;
// 触发停止策略判断
diff --git a/easy-retry-server/easy-retry-server-starter/src/main/java/com/aizuda/easy/retry/server/starter/server/RequestHandlerActor.java b/easy-retry-server/easy-retry-server-starter/src/main/java/com/aizuda/easy/retry/server/starter/server/RequestHandlerActor.java
index 78f19a9b..7073099a 100644
--- a/easy-retry-server/easy-retry-server-starter/src/main/java/com/aizuda/easy/retry/server/starter/server/RequestHandlerActor.java
+++ b/easy-retry-server/easy-retry-server-starter/src/main/java/com/aizuda/easy/retry/server/starter/server/RequestHandlerActor.java
@@ -11,6 +11,7 @@ import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.server.common.HttpRequestHandler;
import com.aizuda.easy.retry.server.common.Register;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
+import com.aizuda.easy.retry.server.common.cache.CacheToken;
import com.aizuda.easy.retry.server.common.dto.NettyHttpRequest;
import com.aizuda.easy.retry.server.common.register.ClientRegister;
import com.aizuda.easy.retry.server.common.register.RegisterContext;
@@ -88,6 +89,12 @@ public class RequestHandlerActor extends AbstractActor {
String groupName = headers.get(HeadersEnum.GROUP_NAME.getKey());
String contextPath = headers.get(HeadersEnum.CONTEXT_PATH.getKey());
String namespace = headers.get(HeadersEnum.NAMESPACE.getKey());
+ String token = headers.get(HeadersEnum.TOKEN.getKey());
+
+ if (!CacheToken.get(groupName, namespace).equals(token)) {
+ EasyRetryLog.LOCAL.error("Token authentication failed. [{}]", token);
+ return JsonUtil.toJsonString(new Result<>(0, "Token authentication failed"));
+ }
// 注册版本
RegisterContext registerContext = new RegisterContext();
@@ -103,6 +110,8 @@ public class RequestHandlerActor extends AbstractActor {
EasyRetryLog.LOCAL.warn("client register error. groupName:[{}]", groupName);
}
+
+
UrlBuilder builder = UrlBuilder.ofHttp(uri);
Collection httpRequestHandlers = SpringContext.getContext()
.getBeansOfType(HttpRequestHandler.class).values();
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskServiceImpl.java
index e441f66b..95f944f2 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskServiceImpl.java
@@ -249,7 +249,6 @@ public class RetryTaskServiceImpl implements RetryTaskService {
RetryRpcClient rpcClient = RequestBuilder.newBuilder()
.nodeInfo(serverNode)
- .namespaceId(serverNode.getNamespaceId())
.client(RetryRpcClient.class)
.build();