我有以下代码遍历人员列表并在 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 完成工作时。我正在使用第三个 Actor:MonitorActor 来跟踪开始和结束时间。MaleActor、FemaleActor 可以在处理个人时向此发送消息
跟踪这个产生的进程的最佳方法是什么?
我探索了
Future.sequence // 但是向 workActor 发送消息的类不是演员。所以未来不会收到消息
在完成时跟踪 personIds,但不使用 var,在 MonitorActor 中累积接收到的消息,它不可能实现这一点.. 并且使用 var 不是首选的做事方式
实现这一点的其他方法可能是什么