2012-07-13 99 views
7

以下错误消息是我的代码:使用Scala AKKA演员

class testActor extends Actor { 
    var test = "test2" 
    def receive = { 
      case "test" ⇒ 
        "works" 
    } 
} 

def test = Action { 
    var test = "test" 
    val system = ActorSystem("MySystem") 
    val myActor = system.actorOf(Props[testActor.testActor], name = "testActor") 

    test = Await.result(myActor ? "test", Duration(1, TimeUnit.SECONDS)) 
} 

我得到一个错误,这条线:

test = Await.result(myActor ? "test", Duration(1, TimeUnit.SECONDS)) 

的错误是:

找不到内含价值用于参数超时:akka.util.Timeout

回答

13

添加类似implicit val timeout = Timeout(5 seconds)的内容。见http://doc.akka.io/docs/akka/2.0.1/scala/futures.html

顺便说一句,你还需要改变

def receive = { 
     case "test" ⇒ sender ! "works" 
} 

test = Await.result(myActor ? "test", timeout.duration).asInstanceOf[String] 
+0

如果我想简单地使用默认值。 http://doc.akka.io/api/akka/2.0/akka/actor/ActorRef.html提及(在评论中)有一个'akka.actor.timeout'。如何使它踢? – akauppi 2016-05-20 12:46:24