我是Akka的新手,我正在实施一些好的东西。我现在拥有的是一名主管,其中有一名儿童演员可以完成实际工作。如果工作完成,孩子将向主管发送一个案例对象已完成,这将改变主管的状态。
但是,从这个意义上讲,我还可以在主线程中发送主管完成,然后动作将完全失灵。
主管是否有办法根据发送消息的人给出不同的反应?或者更好的是,有可能强制主管只有在孩子发送完成后才接收完成?
答案 0 :(得分:2)
是的,很容易。
维护主管演员的一系列儿童:
var children = Set[ActorRef]()
只要主管收到消息,请检查sender
是否属于您的子女:
def receive = {
case Finished(_) if children.contains(sender) => ???
}
就是这样!
但有一点需要考虑,如果您将Finished
用于逻辑上独立的案例,请考虑为每个特定案例创建不同的消息类型。