gpt4 book ai didi

java - 是否可以在 Play Framework 2.5 上使用 Java Akka 访问 actor 中的 Http 上下文

转载 作者:行者123 更新时间:2023-11-30 06:55:06 24 4
gpt4 key购买 nike

当 Actor 收到任何消息时,我使用 JavaAkka 执行一些任务。当我的 Actor 收到一条消息时,我想从我的 Controller 之一执行一些函数,但是这些函数内部使用 http 上下文:

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 上下文不应超出 Controller 层,否则您会发现自己的耦合不适当。

此外,为什么要从参与者调用 Controller 上的方法? Controller 旨在处理传入的 HTTP 请求。这个方法有可能不属于 Controller 吗?

如果您要生成警报,警报会发送到哪里?如果是数据库,则将 DAO 注入(inject)到 actor 中。如果它进入 HTTP 请求,请将 Web 服务客户端或类似内容注入(inject)到 Actor 中。

关于java - 是否可以在 Play Framework 2.5 上使用 Java Akka 访问 actor 中的 Http 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42006993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com