如果它在Spray应用程序中超时,则杀死演员

时间:2015-08-26 01:43:52

标签: scala akka spray

在我的Spray应用程序中,我将请求委托给actor。我希望能够杀死一个花费太长时间的演员。我不确定我是否应该使用Spray超时,Akka问模式或其他什么。

我已实施:

def processRouteRequest(system: ActorSystem) = {
  respondWithMediaType(`text/json`) {
    params { p => ctx =>
      val builder = newBuilderActor
      builder ! Request(p) // the builder calls `ctx.complete`
      builder ! PoisonPill
      system.scheduler.scheduleOnce(routeRequestMaxLife, builder, Kill)
    }
  }
}

这个想法是演员只在一个请求的持续时间内生存,如果它在routeRequestMaxLife内没有完成,它会被强行杀死。这种方法似乎过于顶层(并且发布了很多关于未传递消息的信息)。我甚至不确定它是否正常工作。

似乎我想要实现的应该是一个常见的用例。我该怎么办呢?

0 个答案:

没有答案