最好的回答是在評論部分(所以我不能給他們分數的答案:()是playframework真正異步嗎?
我想知道如果playframework是在這種方式異步(這將是真正的異步,或完全異步)是的,在前端播放是異步的,允許100個線程上有1000個客戶端,但在後端,沒有辦法實現這一點,或者我錯了(我希望是這樣).....
public static void someRequest(String id) {
//This method adds listener to a nio socket listener so it returns
//IMMEDIATELY and page can't be rendered at this point
fetchRemoteDataFromOtherSystem(id, new MyListener());
// DO NOT RENDER PAGE YET but return so thread can be used for other requests
}
public class MyListener extends SomeListener {
public void fireResponse(Response response) {
renderPage(response);
}
}
注意,這將是極端的異步行爲,也請注意,如果你有一個後端系統並花幾秒鐘到每個請求的響應,你現在需要約100更少的機器爲用戶服務的相同。在在後端系統速度非常快的正常情況下,當然不會有性能差異。
感謝, 院長
你讀過這個http://www.playframework.org/documentation/1.2.4/asynchronous?特別是關於Promise的東西。這也許是有趣的:http://caffeinelab.net/2010/06/29/asynchronous-http-client-in-play-framework/ – nylund 2012-02-04 19:18:20
好吧,那真棒,發佈它作爲答案....第二個環節非常明確!很好的回答!!!!(我怎麼不能把評論標記爲正確的答案:() – 2012-02-06 01:52:04
嗯,這個例子顯示了一個Future,它沒有能力添加一個監聽器,所以然後玩必須做一個民意調查並要求isDone,isDone遍地????那種臭的....爲什麼不直接使用響應線程通知播放,然後會叫下來到控制器方法的第二個時間 – 2012-02-09 18:15:55