Reputation: 505
Hi I want to wrap AskTimeOutException and send proper message ....
class Application @Inject()(system: ActorSystem) extends Controller {
def index = Action { Ok("Welcome")}
val ref: ActorSelection = system.actorSelection("akka.tcp://[email protected]:5150/user/nlp")
implicit val timeout = Timeout(5 seconds)
def nlp(query: String) = Action.async {
val fut: Future[NLPResponse] = (ref ? NLPRequest(query)).mapTo[NLPResponse]
fut map {
case e: akka.pattern.AskTimeoutException => InternalServerError("NLP engine is down please try after some time")
case res: NLPResponse => Ok(res.response)
}
}
}
Please suggest me proper way to handle it..
Upvotes: 2
Views: 528
Reputation: 1883
Future errors should be handle using the recover combinator:
fut map {
case res: NLPResponse => Ok(res.response)
} recover {
case _: akka.pattern.AskTimeoutException => InternalServerError("NLP engine is down please try after some time")
case e => InternalServerError("Other error: " + e.getMessage)
}
Upvotes: 2