Es klingt wie Sie müssen ein future verwenden. Soweit ich verstehe, kümmern sich Akka-Futures um die Schaffung von Schauspielern & Entsorgung für Sie; Wenn Sie flatMap
mehrere Futures zusammen finden, werden Sie feststellen, dass einige innerhalb desselben Akteurs ausgeführt werden, während für andere ein neuer erstellt wird. Um schamlos die Dokumentation paraphrasieren:
import akka.japi.Function;
import java.util.concurrent.Callable;
import akka.dispatch.Futures;
import akka.dispatch.OnComplete;
Future<String> f = Futures.future(new Callable<String>() {
public String call() {
return "Hello" + "World";
}
}, system.dispatcher()).andThen(new OnComplete<String>() {
public void onComplete(Throwable err, String result) {
// do something with the err and/or result
}
});
});
Ich denke, etwas wie oben könnte ausreichen? Schauen Sie sich das Dokument für weitere Beispiele an ...
@ viktor-clang könnte das anders wissen, aber ich denke nicht, dass Sie besonders besorgt sein sollten über die Anzahl der Akteure, die im allgemeinen Fall hervorgebracht werden; Sie sind viel billiger zu erstellen als OS-Threads.
Warum brauchen Sie einen Schauspieler, wenn es nur eine einmalige ist? nutze einfach eine Zukunft? Zukunft ({process (msg)}) (context.dispatcher) pipeTo einigeOtherActor –
In dem Kontext, ich brauchte es, um ein Akteur zu sein, so dass ich es als Absender an einen anderen Actor weitergeben konnte. Das größere Problem könnte jedoch das Design sein, das dies erfordert. – SoftMemes