メッセージを受信すると、ファイルシステムでファイルを検索し、ファイルのフルパスを返すアクターがあります。
非同期に保つために、次のことを行いました。
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
。ドキュメンテーションは次のように述べています。
アクター内でのみ有効なので、アクターを閉じて * 他のスレッドに公開しないでください!
つまり、必然的に同期を維持する必要があるということですか? 他に方法はありますか?