Я использую JavaAkka для выполнения некоторых задач, когда актер получает какое-либо сообщение. Когда мой актер получит сообщение, я хотел бы выполнить некоторые функции от одного из моих контроллеров, однако есть внутри этих функций использует контекст HTTP как:Можно ли получить доступ к контексту Http в акторе с помощью Java Akka на Play Framework 2.5
ctx().messages().at("sensor_alert");
или
session().get("id");
И я получаю ошибку:
[error] 2017-02-02 13:06:54 -0300 a.a.OneForOneStrategy - There is no HTTP Context available from here.
java.lang.RuntimeException: There is no HTTP Context available from here.
at play.mvc.Http$Context.current(Http.java:62)
at play.mvc.Controller.ctx(Controller.java:27)
at controllers.IpmiMonitorController.gerarAlertas(IpmiMonitorController.java:370)
at actor.IpmiActor.onReceive(IpmiActor.java:27)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)
at akka.actor.Actor$class.aroundReceive(Actor.scala:484)
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
at akka.actor.ActorCell.invoke(ActorCell.scala:495)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
Есть ли решение?
Каков ваш прецедент для вызова функции с контроллера? Если у вас есть бизнес-функции, это должно идти в какой-то другой класс - где нет контекста http и т. Д., Как он выглядит, вам нужны какие-то пользовательские свойства (сеанс, язык). какие значения вы ожидаете, если вы вызываете контроллер у актера? какой пользователь это будет? Кто вызывает сообщение актера? он исходит от контроллера, вы можете использовать шаблон запроса и тем самым «оставаться» в контроллере для текущего пользователя. – rethab