[英]Play!Framework & Akka tell
在將Akka與Play(必須使用Java 7)集成時,我想要的是控制器動作向演員發送和忘記一條消息。 但是,我希望參與者將其工作的響應發送給發送http請求的客戶端。
我已經在控制器中使用ask()成功嘗試了此操作,並希望將其更改為使用tell()。 當問問返回未來時,這很“輕松”。
我知道我需要退還承諾。
我“了解” Akka的未來-只是無法將故事拼湊而成:
Http.Context
一條消息並傳遞Http.Context
- current()
嗎? -我實際上想要Http.Request
, Http.Response
以及Http.Session
tell
將消息發送給路由器tell
Promise< Result>
在哪里-我是否要創建一個包裝tell()的Future? 如果是這樣,怎么辦? Promise< Result>
? (關於上面列表的事情不是很開心...)
為什么要為此奮斗? 我想在使用tell()時遵循建議-http://techblog.net-a-porter.com/2013/12/ask-tell-and-per-request-actors/
任何幫助表示贊賞。
謝謝,S-
您可以按照本文建議的相同方式實施它。 創建一個按請求的actor,無論成功還是失敗,該actor都會完成一個承諾,將來會在播放控制器中返回。
所以您的控制器看起來像這樣(對不起,代碼在Scala中,尚未編譯):
def index = Action.async {
val responsePromise = Promise[String]
Akka.system.actorOf(Props(classOf[MyPerRequestActor], responsePromise))
responsePromise.future.map(Ok(_))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.