在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总共创造了四个期货吗?
在第一种情况下很容易改变超时,例如
val f1 = actor1 !!! (msg1, 15000) // sets timeout to 15 seconds
但是如何设置包装未来的超时?有什么想法吗?
答案 0 :(得分:6)
我相信实际上会有6个期货,你从演员那里得到3个,每个flatMap / map方法有1个。
3个演员期货的超时设置就像你说的那样,但3个包装期货将继续在for-comprehension的每个部分右侧的未来超时。但是,返回的未来将使用for-comprehension中第一个未来的超时。
对于Akka 2.0,只要测试期间没有出现问题,这将改为允许指定隐式超时。