gpt4 book ai didi

java - Akka actorSelection(String) 不适用于 TCP

转载 作者:行者123 更新时间:2023-11-30 05:48:37 25 4
gpt4 key购买 nike

我正在尝试使用 Akka 并在不同的 PC 上使用 actor。首先,我尝试连接到同一 JVM 和同一 ActorSystem 中的 Actor,但使用远程选择。然而,即使是这个简单的任务我也失败了。以下是显示我的问题的最小化代码。我相信我正在以编程方式添加所有需要的配置。当我按原样运行代码时,使用标有 /*works*/ 的行,我得到 B receive dd;如果我将 /*works*//*fails*/ 交换,我会得到 [INFO]..[akka://N1/deadLetters]..未交付

我做错了什么?如何使用远程选择器访问 B

class A extends AbstractActor {
public Receive createReceive() {
return receiveBuilder()
.match(String.class, s -> {
ActorSelection selection = context().actorSelection(
/*fails*/ //"akka.tcp://N1@127.0.0.1:2500/user/B"
/*works*/ "akka://N1/user/B"
);

selection.tell("dd", self());
})
.build();
}
}

class B extends AbstractActor {
public Receive createReceive() {
return receiveBuilder()
.match(String.class, s -> {
System.out.println("B received " + s);
})
.build();
}
}

public class AkkaS1 {
public static void main(String[] args) {
Config config =
ConfigFactory
.parseString("akka.remote.netty.tcp.port = 2500")
.withFallback(
ConfigFactory.parseString("akka.remote.netty.hostname = 127.0.0.1"))
.withFallback(ConfigFactory.load());

ActorSystem s = ActorSystem.create("N1", config);
ActorRef a = s.actorOf(Props.create(A.class, () -> new A()), "A");

s.actorOf(Props.create(B.class, () -> new B()), "B");
a.tell("Please discover b", ActorRef.noSender());

System.out.println(">>> Press ENTER to exit <<<");
try {
System.in.read();
} catch (IOException ioe) {
} finally {
s.terminate();
}
}
}

最佳答案

I believe I'm programmatically adding all the needed configuration.

您似乎缺少一些设置:akka.actor.provider = remoteakka.remote.enabled-transports = ["akka.remote.netty.tcp"] 。另外,将 akka.remote.netty.hostname 更改为 akka.remote.netty.tcp.hostname

根据documentation ,最低配置如下:

akka {
actor {
provider = remote
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 2500
}
}
}

关于java - Akka actorSelection(String) 不适用于 TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54394876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com