了解akka中的问问模式

时间:2017-07-11 16:23:52

标签: scala akka

我正在尝试在akka中使用ask模式。据我所知documentation

  

ask操作涉及创建一个内部actor来处理   此回复,需要超时才能销毁   为了不泄漏资源;请参阅下文。

问题是我希望在未来成功完成后回复发件人:

 trait Command
 trait Status
 case class SetStatus(c: Command, st: Status)+
 sealed trait StatusChangeResponse
 object Ok extends StatusChangeResponse
 //...
 override def receive: Receive = {
    case c : Command => {
      val f = sender ? SetStatus(c, Run) map(v => v.asInstanceOf[StatusChangeResponse])
      f.onComplete{
        case Success(Ok) =>
          c()
          sender ! SetStatus(c, Finished) // <---- Here
      }
    }
  }

问题是我不太明白是否可以这样做。如文档中所指定,它在另一个actor中执行。所以sender可能不是我所期望的。

这样做可以吗?

0 个答案:

没有答案