人々のリストをトラバースし、class1の各人々のコールバックを呼び出す次のコードがあります。
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)
ここで、すべての人を同期するのにかかった合計時間を追跡したいと思います。つまり、最後のworkActorが作業を完了したとき。3番目のアクターであるMonitorActorを使用して、開始時刻と終了時刻を追跡しています。MaleActor、FemaleActorは、個人を処理するときにこれにメッセージを送信できます
この生成されたプロセスを追跡するための最良の方法は何ですか?
探検しました
Future.sequence //しかし、workActorにメッセージを送信するクラスはアクターではありません。だから未来はメッセージを受け取らない
終了時にpersonIdを追跡しますが、varを使用せずに、受信したメッセージをMonitorActorに蓄積することはできません。これを実装することはできません。また、varを使用することは好ましい方法ではありません。
これを実装する他の方法は何でしょうか