我使用Akka 2.2.3编写distributed BBS software作为Scala中的远程消息传递。
然后,我通过NAT在互联网上发现了一些问题:Akka无法识别外部IP地址AFAIK,因为它使用socket.bind
。
接下来,我认为我可以将0.0.0.0指定为akka.remote.netty.tcp.hostname
,以便采用所有接口和地址来监听来自Internet端的连接。
问题在于:Akka使用0.0.0.0作为自己的IP地址,并生成ActorRef
,如下所示:akka.tcp://system@0.0.0.0/user/foo
。
其他节点无法通过Internet使用此ActorRef
引用节点。
如何通过Internet连接节点?我不能通过NAT使用Akka吗?
答案 0 :(得分:5)
Akka远程处理不支持NAT,这是故意的,因为它的目的只是为了启用群集(即严格控制的节点集之间的对称通信)。已经设计了几种用于因特网范围的协议,例如: G。使用Akka IO的HTTP / REST(请参阅正在成为Akka HTTP的Spray)或裸TCP。