From d6f3ae6c44a56fb2c945e5a3473d0b110741c122 Mon Sep 17 00:00:00 2001 From: tjq Date: Tue, 17 Jan 2023 21:37:41 +0800 Subject: [PATCH] feat: define insideCluster in HandlerLocation --- .../remote/framework/base/HandlerLocation.java | 10 +++++----- .../tech/powerjob/remote/akka/AkkaTransporter.java | 12 ++++++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/base/HandlerLocation.java b/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/base/HandlerLocation.java index 5aba1c13..1b3d5e63 100644 --- a/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/base/HandlerLocation.java +++ b/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/base/HandlerLocation.java @@ -15,6 +15,7 @@ import java.io.Serializable; */ @Getter @Setter +@ToString @Accessors(chain = true) public class HandlerLocation implements Serializable { /** @@ -25,13 +26,12 @@ public class HandlerLocation implements Serializable { * 方法路径 */ private String methodPath; + /** + * 是否在本集群内(用于兼容 AKKA 等除了IP还需要指定 system 访问的情况) + */ + private boolean insideCluster; public String toPath() { return String.format("/%s/%s", rootPath, methodPath); } - - @Override - public String toString() { - return toPath(); - } } diff --git a/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaTransporter.java b/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaTransporter.java index 8f82aefb..57b52d29 100644 --- a/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaTransporter.java +++ b/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaTransporter.java @@ -8,6 +8,7 @@ import tech.powerjob.common.PowerSerializable; import tech.powerjob.common.RemoteConstant; import tech.powerjob.common.request.ServerScheduleJobReq; import tech.powerjob.common.utils.CommonUtils; +import tech.powerjob.remote.framework.base.HandlerLocation; import tech.powerjob.remote.framework.base.RemotingException; import tech.powerjob.remote.framework.base.ServerType; import tech.powerjob.remote.framework.base.URL; @@ -27,9 +28,9 @@ import java.util.concurrent.ExecutorService; */ public class AkkaTransporter implements Transporter { + private final ServerType serverType; private final ActorSystem actorSystem; - private final String targetActorSystemName; /** * akka://@:/ @@ -38,7 +39,7 @@ public class AkkaTransporter implements Transporter { public AkkaTransporter(ServerType serverType, ActorSystem actorSystem) { this.actorSystem = actorSystem; - this.targetActorSystemName = AkkaConstant.fetchActorSystemName(serverType, false); + this.serverType = serverType; } @Override @@ -61,9 +62,12 @@ public class AkkaTransporter implements Transporter { private ActorSelection fetchActorSelection(URL url) { - String targetActorName = AkkaMappingService.parseActorName(url.getLocation().getRootPath()).getActorName(); + HandlerLocation location = url.getLocation(); + String targetActorSystemName = AkkaConstant.fetchActorSystemName(serverType, location.isInsideCluster()); - CommonUtils.requireNonNull(targetActorName, "can't find actor by URL: " + url.getLocation()); + String targetActorName = AkkaMappingService.parseActorName(location.getRootPath()).getActorName(); + + CommonUtils.requireNonNull(targetActorName, "can't find actor by URL: " + location); String address = url.getAddress().toFullAddress();