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