6
我正在構建類似(但不完全相同)的Akka問題模式,在那裏我需要實例化一個處理單個消息的臨時actor,然後殺死它自己。我已經爲每個請求使用actorOf()實現了基本的工作流程,但是這並不完全正確,因爲它每次都會在新路徑上註冊一個新的actor。我該如何正確激活阿卡的臨時演員?
這樣做的正確方法是什麼?
我正在構建類似(但不完全相同)的Akka問題模式,在那裏我需要實例化一個處理單個消息的臨時actor,然後殺死它自己。我已經爲每個請求使用actorOf()實現了基本的工作流程,但是這並不完全正確,因爲它每次都會在新路徑上註冊一個新的actor。我該如何正確激活阿卡的臨時演員?
這樣做的正確方法是什麼?
聽起來你需要使用future。據我瞭解,阿卡期貨爲您處理好爲您創作的演員創作&;如果你一起合作幾個未來,你會注意到一些人在同一個演員中執行,而另一些則創建了一個新的未來。無恥地套用文件:
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
}
});
});
我猜像上面就足夠?查看文檔以獲取更多示例...
@ viktor-clang可能知道其他情況,但我認爲您不應特別擔心在一般情況下產生的演員人數;它們比OS線程創建便宜得多。
爲什麼你需要一個演員,如果它只是一次性?只是用未來? Future({process(msg)})(context.dispatcher)pipeTo someOtherActor –
在上下文中,我需要它是一個演員,以便我可以將它作爲發件人傳遞給另一個演員。然而,更大的問題可能是需要這種設計。 – SoftMemes