В моем приложении Spray я передаю запросы актерам. Я хочу уметь убить актера, который занимает слишком много времени. Я не уверен, должен ли я использовать тайм-ауты Spray, шаблон Akka или что-то еще.Убейте актера, если он истекает время в приложении Spray
Я выполнил:
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
он получает насильственно убит. Этот подход кажется чрезмерным (и выводит много информации о недоставленных сообщениях). Я даже не уверен, что он работает правильно.
Кажется, что я пытаюсь достичь, должен быть обычным прецедентом. Как мне подойти к нему?