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

标签 scala akka

我有这段代码,我在 Scala 中发出询问请求:

someActorRef ? SomeMessage()

但是,我收到此消息:

could not find implicit value for parameter timeout: akka.util.Timeout

我也尝试过这个:

Await.ready(someActorRef ? SomeMessage(), Duration("3 seconds")).asInstanceOf[String]

但我收到了同样的消息。

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

我可以在不阻塞的情况下向其他 Actor 请求消息吗?

最佳答案

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()

请注意,这 5 秒内不会发生任何阻塞,ask 模式是完全异步/非阻塞的。它将返回一个 Future,您可以阻止(不推荐)或附加回调(如您所愿)

f.onComplete(doSomething(_))

更多信息here .

关于scala - 找不到参数超时的隐式值 : akka. util.Timeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41170210/

相关文章:

javascript - Scala 类似 JavaScript 的替代品

java - Apache Camel 文件组件 - 如何只扫描新文件?

java - 传播 Akka 的 PoisonPill 消息

java - 将Akka与现有Java项目集成的示例

Akka 2.1 远程 : sharing actor across systems

scala - 基于 Akka 的 Web 应用程序架构

java - Scala actor 作为参数传递给其他 actor

scala - Akka Stream Graph 恢复问题

scala - 如何在 EMR 上使用 Spark 3 解析 Scala 对象的 "Failed to load class"

scala - 闪存如何通过请求变得可用?