Ich habe einen Akteur, der beim Empfang einer Nachricht das Dateisystem nach einer Datei durchsucht und den vollständigen Pfad der Datei zurückgibt.Absender in einer Zukunft
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")
}
}
Aber ich habe festgestellt, dass es die Nachricht an akka://FileSystem/deadLetters
und nicht die sender
zurück:
es asynchron zu halten, habe ich getan. Dokumentation sagt das:
Nur gültig innerhalb des Schauspielers selbst, also schließen Sie nicht darüber und * veröffentlichen Sie es zu anderen Themen!
Also heißt es, ich muss es unbedingt synchron halten? Gibt es einen anderen Weg?
Warum eine Zukunft nutzen? Es ist eine E/A-Operation (und so möglicherweise blockiert), also setzen Sie den Actor auf die Blockierung-IO-Dispatcher. Wenn Sie mehrere Dateien gleichzeitig suchen müssen, führen Sie mehrere Instanzen aus. –