【问题标题】:How to change the timeout in composed futures?如何更改组合期货的超时时间?
【发布时间】:2011-07-13 18:45:01
【问题描述】:

composing futures 上的akka​​ 1.1 文档的示例中,我想知道如何以编程方式设置生成的未来的超时。我知道我可以在 akka.conf 中调整全局超时,但我只想针对这段代码进行调整。

示例代码如下所示

val f1 = actor1 !!! msg1
val f2 = actor2 !!! msg2

val f3 = for {
   a: Int    <- f1
   b: Int    <- f2
   c: String <- actor3 !!! (a + b)
} yield c

val result = f3.get()

在这个例子中,akka 总共创建了四个期货,我说得对吗?

  • 每条消息发送到 actor1、2 和 3 一个
  • 一个包装这三个期货

在第一种情况下更改超时很容易,例如

val f1 = actor1 !!! (msg1, 15000)  // sets timeout to 15 seconds

但是如何设置包装未来的超时时间?有什么想法吗?

【问题讨论】:

    标签: scala actor akka


    【解决方案1】:

    我相信实际上总共有 6 个期货,你从演员那里得到 3 个,每个 flatMap/map 方法有 1 个。

    3 个 actor 期货的超时设置就像您所说的那样,但是 3 个包装器期货将从用于理解的每个部分右侧的未来继承超时。但是返回的future会使用第一个future的超时时间进行理解。

    对于 Akka 2.0,这将更改为允许指定隐式超时,只要在测试期间没有弹出问题。

    【讨论】:

    • 谢谢,这正是我需要的信息。所以在 Akka 2.0 发布之前,我会增加第一个 future 的超时时间。这适用于我的目的,尽管明确设置会更好。
    猜你喜欢
    • 2019-11-13
    • 1970-01-01
    • 2016-08-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多