我在本地设置了两个演员,但演员系统不同。这里的目标是让参与者 A 向参与者 B 发送消息。
但是,我无法让演员 A 使用 ActorSelection 向演员 B 发送消息(远程处理),如下所示:
parent.ActorSelection("akka.tcp://RemoteSystem@localhost:8888/user/RemoteActor/ChildActor").Tell(msg)
会出现“无效地址”的错误。我做错了什么?
我已经黔驴技穷了。
编辑:
这是我的客户端配置:
let system =
let config = """
akka {
loglevel=DEBUG,
log-config-on-start = on,
#loggers="Akka.Logger.Serilog.SerilogLogger, Akka.Logger.Serilog"
actor {
provider = "Akka.Remote.RemoteActorRefProvider, Akka.Remote"
debug {
receive = on
autoreceive = on
lifecycle = on
event-stream = on
unhandled = on
}
remote {
helios.tcp {
transport-class = "Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote"
applied-adapters = []
transport-protocol = tcp
port = 0
hostname = "localhost"
# Maximum frame size: 600KB
maximum-frame-size = 500000b
log-remote-lifecycle-events = DEBUG
}
}
}
"""
这是我的服务器配置:
let system =
let config = """
akka {
loglevel=DEBUG,
log-config-on-start = on,
#loggers="Akka.Logger.Serilog.SerilogLogger, Akka.Logger.Serilog"
actor {
provider = "Akka.Remote.RemoteActorRefProvider, Akka.Remote"
debug {
receive = on
autoreceive = on
lifecycle = on
event-stream = on
unhandled = on
}
remote {
helios.tcp {
transport-class = "Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote"
applied-adapters = []
transport-protocol = tcp
port = 8888
hostname = "localhost"
# Maximum frame size: 600KB
maximum-frame-size = 600000b
log-remote-lifecycle-events = DEBUG
}
}
}
"""
这是客户端的输出:
[![error][1]][1]
另一件事是,为什么端口号总是回退到 2552 ?我使用了 app.config 以及从内部代码解析。它仍然使用相同的端口号。