繁体   English   中英

Akka Actor无法连接到Scala Actor可以连接的远程服务器

[英]Akka Actor can't connect to remote server where Scala Actor could

我有一个小问题。 我只是将当前项目的客户端/服务器通信从远程Scala Actors迁移到了远程Akka Actors。

在本地计算机上进行测试时,一切工作正常,但是一旦尝试在不同计算机上使用客户端和服务器运行代码,客户端就无法再访问服务器(我得到了java.nio.channels.NotYetConnectedException )。 我加倍并三倍检查了正在使用的ip和端口。 这与我在Scala actor中的代码中使用的主机数据相同(顺便说一下,它仍然可以工作。因此,显然防火墙设置和服务器在技术上都无法更改)

这是代码的重要部分(我主要从akkas主页复制并粘贴了这些代码):

在服务器上的actor

import akka.actor.Actor._
import akka.actor.{Actor, ActorRef, Supervisor}

override def preStart = {

  // I also tried the servers external ip here 
  remote.start(host, 1357) 

  // SERVER_SERVICE_NAME is a string constant in a trait that both server
  // and client extend
  // all actual work is refered to SessionActor
  remote.registerPerSession(SERVER_SERVICE_NAME, actorOf[SessionActor])
}

并在客户端上:

import akka.actor.Actor._
import akka.actor.{Actor, ActorRef, Supervisor}

override def preStart = {

  // CLIENT_SERVICE_NAME is a string constant
  Actor.remote.start("localhost", 5678).register(CLIENT_SERVICE_NAME, self)

  // I also tried "Thread sleep 1000" here just in case

  // internalServer is a private var of the type Option[ActorRef]
  // host and serverPort are actually read from a propertiesfile. Guess this
  // doesn't matter. I checked them.
  internalServer = Some(
    remote.actorFor(SERVER_SERVICE_NAME, host, serverPort)
  )

  // Again I tried "Thread sleep 1000" here. Didn't help neither

  internalServer foreach (server => {
    (server !! Ping) foreach (_ match { // !!! this is where the exception is thrown !!!
        case Pong   => println("connected")
        case _      => println("something's fishy")
      })
    })

}

我正在使用:Scala 2.8.1(尽管我不确定客户端的计算机是2.8还是2.8.1,但我使用akka发行版中的scala-library.jar)Akka 1.0

我知道您无法调试她的代码,但是对于任何提示或想法,在这里可能出什么问题,我将深表感谢。

PS:尝试发送Ping后的一秒钟内引发异常。 因此,我不必费心增加超时时间。

免责声明:我是Akka的PO

尝试使用原始IP地址代替remote.start()中的主机名,如果仍不能解决问题,则有两种选择:

  1. 确保双方可以DNS互相解析
  2. 升级到当前的主服务器(1.1-SNAPSHOT),因为我做了很多更改以避免名称解析。

有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM