作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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 = remote
和 akka.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/
我是一名优秀的程序员,十分优秀!