【发布时间】:2017-03-03 15:57:24
【问题描述】:
我在 Actor 上有以下一段代码,我在其中要求其他人执行操作(将某些内容保存在外部数据库中)
如果这成功:
然后我向自己发送一条消息,以在我的本地状态中反映该操作的结果,然后将其返回给原始的sender。
如果对数据库的持久性失败:
然后我想用Status.Failure(返回给我)直接回复当前发件人。
代码如下所示:
case Event(SomeAction(name), _) =>
val origin = sender()
ask(someOtherActor, SomeAction(name)).mapTo[ActionResult]
.map(ActionCompleted)
.onComplete {
case Success(value) => self.tell(value, origin)
case Failure(e) => origin ! Status.Failure(e)
}
stay()
case Event(ActionCompleted(result), state) =>
stay using state.update(result) replying result
上面的代码有效,但我需要依赖将发送者复制到局部变量中以避免关闭它。
我想知道pipeTo 是否有更好的方法来做到这一点?
【问题讨论】: