我有以下代碼遍歷人員列表,並在class1中爲每個人員調用回調。當演員完成時,Akka跟蹤
def syncPeople(callback: Person => _) = Future {
person.findAll(criteria).foldLeft(0L) { (count, obj) =>
callback(obj)
count + 1
}
}
回調和調用syncPeople是Class2中,看起來與此類似
def getActor(person: Person):ActorRef = {
if(person.isMale) maleActor
else femaleActor
}
def process(person: Person): Unit = {
val workActor = getActor(person)
workActor ! person
} //The actor does the actual work and may be quite intense
def syncPeople(process)
現在,我要跟蹤同步所有的人所花費的總時間。即最後一名工作者完成工作時。我正在使用第三個Actor:MonitorActor來跟蹤開始和結束時間。當他們處理個人時,MaleActor,FemaleActor可以發送消息到
跟蹤這些衍生過程的最佳方式是什麼?
我探索
Future.sequence //但該類發送workActor的消息是不是一個演員。所以未來不會收到消息
當他們完成時跟蹤personIds,但沒有使用var,在MonitorActor中累積收到的消息它不可能實現此操作,並且使用var不是首選的方法事情
有什麼能實現這個
感謝您的指針,我結束了使用akka-fsm ..它有如一個單一的請求syncPeople()時的魅力。爲了處理對syncPeople的多個請求,我最終爲每個請求創建了一個FSM actor的實例,並在syncPeople完成時停止它。不知道這是否正確的做法。我沒有最終使用getId()。你能否詳細說明使用Id的方法。 – scout