我有一个演员,它在收到消息时在文件系统中搜索文件并返回文件的完整路径。
为了保持异步,我做了:
def receive = {
case s:String => {
val f = future{
val ans = search(s)
println("Input Request: "+s+" output:"+ans+" "+sender.path)
}
f.onComplete{
case Success(x) => sender ! x
case Failure(y) => println("Could not complete it")
}
}
}
但我观察到它将消息返回到akka://FileSystem/deadLetters
而不是sender
. 文档说:
仅在 Actor 本身内有效,因此不要关闭它并 * 将其发布到其他线程!
那么这是否意味着,我必须保持同步?还有其他方法吗?