我有一个方法getAggOutput(),它在Actor A中返回一个HashMap。
def getAggOutput: HashMap[X, List[Y]] = {
println("***** Inside getAggOutput, rMap is: " + rMap)
return rMap
}
此外,在Actor A中,在case对象GETOUTPUT:
下调用该方法case GETOUTPUT =>
println("***** Inside GETOUTPUT")
getAggOutput
在演员B中,我正在做以下事情:
implicit val timeout = Timeout(5 seconds)
val reducerInput = sender ? GETOUTPUT
val result = Await.result(reducerInput, timeout.duration)
println("****** RESULT is: " + result)
print语句显示rMap的值是正确的,但是,我收到以下错误:
java.util.concurrent.TimeoutException: Futures timed out after [5 seconds]
结果未分配HashMap的值。
如何使这项工作?或者,有更好的方法吗?我只需要让rMap进入Actor B
更新:
我想出了这一部分。在GETOUTPUT的情况下,我需要:
sender ! getAggOutput.
println显示结果变量中的HashMap是正确的。
现在,我正在尝试遍历HashMap:
for( (key,value) <- result)
{
redOut += (key -> value)
}
我收到以下错误:
type mismatch;
[error] found : (Any, Any)
[error] required: (X, U)
[error] redOut += (key -> value)
更新:
I also tried:
for( (key,value) <- result)
{
redOut += (key.asInstanceOf[X] -> value.asInstanceOf[U])
}
但是,我收到以下错误:
value withFilter is not a member of Any
[error] for( (key,value) <- result)
答案 0 :(得分:0)
没有必要这样做,我只是在Actor A中循环Hashmap并将每个(key,value)对发送给Actor B