1
我目前正在評估異步場景中的播放2.0框架。我做了如下實驗:播放2.0 forkjoin線程數高
def test = Action {
val futureResponse: Future[play.libs.WS.Response] = scala.concurrent.Future {
val remoteCall = WS.url("http://127.0.0.1:8080/slowweb/SlowServlet1").get();
remoteCall.get();
}
Async {
futureResponse.map(response => Ok("Got result: " + response.getBody()))
}
}
的「:8080/slowweb/SlowServlet1」是一個緩慢的Web服務調用的模擬,它需要2秒返回。
然後我運行jmeter對端點「:9000/test」。我觀察到以下行爲:如果我在jmeter中運行50個線程,forkjoin池大小爲50;如果我在jmeter中運行200個線程,forkjoin池大小爲200.
它看起來像線程池大小與併發請求大小相同。我期望的是,如果使用異步方法,線程池的大小應該小得多。
我做錯了什麼?
感謝
感謝您的答覆。但是「WS.url(」http://127.0.0.1:8080/slowweb/SlowServlet1「).get();」返回F.Promise [響應],而不是未來。 – Frank
對不起。你在使用Play 2.0.x嗎?我的代碼是2.1.x. –
嗨Ekito,看起來像問題解決。我接受你的建議並將該行更改爲:val futureResponse:Future [play.libs.WS.Response] = WS.url(「http://127.0.0.1:8080/slowweb/SlowServlet1」).get()。getWrappedPromise (); – Frank