2012-05-10 22 views
6

我正在構建類似(但不完全相同)的Akka問題模式,在那裏我需要實例化一個處理單個消息的臨時actor,然後殺死它自己。我已經爲每個請求使用actorOf()實現了基本的工作流程,但是這並不完全正確,因爲它每次都會在新路徑上註冊一個新的actor。我該如何正確激活阿卡的臨時演員?

這樣做的正確方法是什麼?

+3

爲什麼你需要一個演員,如果它只是一次性?只是用未來? Future({process(msg)})(context.dispatcher)pipeTo someOtherActor –

+0

在上下文中,我需要它是一個演員,以便我可以將它作爲發件人傳遞給另一個演員。然而,更大的問題可能是需要這種設計。 – SoftMemes

回答

5

聽起來你需要使用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線程創建便宜得多。