Akka演员(Scalia)l:如何对不同的发件人以不同的方式对同一条消息作出反应?

时间:2016-04-28 17:01:08

标签: scala akka

我是Akka的新手,我正在实施一些好的东西。我现在拥有的是一名主管,其中有一名儿童演员可以完成实际工作。如果工作完成,孩子将向主管发送一个案例对象已完成,这将改变主管的状态。

但是,从这个意义上讲,我还可以在主线程中发送主管完成,然后动作将完全失灵。

主管是否有办法根据发送消息的人给出不同的反应?或者更好的是,有可能强制主管只有在孩子发送完成后才接收完成?

1 个答案:

答案 0 :(得分:2)

是的,很容易。

维护主管演员的一系列儿童:

 var children = Set[ActorRef]()

只要主管收到消息,请检查sender是否属于您的子女:

 def receive = {
    case Finished(_) if children.contains(sender) => ???
 }

就是这样!

但有一点需要考虑,如果您将Finished用于逻辑上独立的案例,请考虑为每个特定案例创建不同的消息类型。