我正在尝试向我的Akka程序执行端口转发,客户端可以通过Internet与服务器通信。我配置了我的路由器,端口转发机制正在运行,但Akka似乎有问题。
问题是客户端无法从服务器获取远程actor。它在服务器端不断出现错误,即收件人不同。客户端通过"akka.tcp://RemoteSystem@67.18.67.18:5150/user/remote"
获取远程actor,例如67.18.67.18
是我的全局IP地址。然后远程actor在路径"akka.tcp://RemoteSystem@192.168.0.106:5150/user/remote"
处进行远程处理,其中192.168.0.106
是我的服务器的本地IP。我知道客户端必须使用相同的路径访问远程actor,但是尽管我定义了public-localname
,服务器仍然不会将全局IP转换为本地IP或允许通过全局IP进行访问。它有什么解决方法吗?以下是服务器的application.conf
。
akka {
loglevel = "INFO"
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = ""
port = 5150
public-hostname = "67.18.67.18"
}
log-sent-messages = on
log-received-messages = on
}
}
答案 0 :(得分:0)
config参数是要绑定到的接口的“bind-hostname”,以及公共IP的“hostname”。您还需要为要绑定的本地端口设置“bind-port”,为公共IP设置“port”。
有关详细信息,请参阅文档:http://doc.akka.io/docs/akka/snapshot/scala/remoting.html