She*_*tha 0 java future akka playframework-2.0
在将Akka与Play集成(必须使用Java 7)时,我想要的是控制器动作来触发并忘记给演员的消息.但是,我希望actor将其工作的响应发送给发送http请求的客户端.
我已经在我的控制器中使用ask()成功地尝试了这个...并且想要将其更改为使用tell().当问题回归未来时,它很"容易".
我知道我需要返回一个承诺.
我"理解"阿卡的未来 - 只是不能将故事拼接在一起:
Http.Context- current()?- 我其实想要的Http.Request,Http.Response也许是Http.Session tellPromise< Result>- 我是否要创建一个包装tell()的Future?如果是这样,怎么样?Promise< Result>??(关于以上列表的事情并不是......)
为什么要与此斗争?我想遵循使用tell()的建议 - http://techblog.net-a-porter.com/2013/12/ask-tell-and-per-request-actors/
任何帮助赞赏.
谢谢,s-
您可以按照文章建议的相同方式实现它.创建一个每请求的actor,在成功或失败时将完成在play控制器中返回未来的promise.
所以你的控制器看起来像这样(抱歉,代码在Scala中而不是编译):
def index = Action.async {
val responsePromise = Promise[String]
Akka.system.actorOf(Props(classOf[MyPerRequestActor], responsePromise))
responsePromise.future.map(Ok(_))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |