找不到参数超时的隐式值:akka.util.Timeout

oct*_*ian 2 scala akka

我有以下代码,在Scala中提出询问请求:

someActorRef ? SomeMessage()
Run Code Online (Sandbox Code Playgroud)

但是,我收到此消息:

could not find implicit value for parameter timeout: akka.util.Timeout
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

Await.ready(someActorRef ? SomeMessage(), Duration("3 seconds")).asInstanceOf[String]
Run Code Online (Sandbox Code Playgroud)

但是我得到了同样的信息。

无论如何,我不想阻止。我想要一个Future,然后再给它onComplete回调。

我可以要求其他演员发信息而不加阻挡吗?

Ste*_*tti 5

ask需要一个隐性的Timeout,之后它只会使Future失败TimeoutException

import akka.pattern.ask
import akka.util.Timeout
import scala.concurrent.duration._

implicit val timeout = Timeout(5 seconds)
val f = someActorRef ? SomeMessage()
Run Code Online (Sandbox Code Playgroud)

请注意,在这5秒钟内不会阻塞,该ask模式是完全异步/非阻塞的。它将带给您一个Future,您可以在其上阻止(不推荐)或附加回调(如您所愿)

f.onComplete(doSomething(_))
Run Code Online (Sandbox Code Playgroud)

更多信息在这里