我目前正在评估异步场景中的 play 2.0 框架。我做了如下实验:
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服务调用,需要2s才能返回。
然后我对端点“:9000/test”运行jmeter。我观察到以下行为:如果我在 jmeter 中运行 50 个线程,则 forkjoin 池大小为 50;如果我在 jmeter 中运行 200 个线程,则 forkjoin 池大小为 200。
在我看来,线程池大小与并发请求大小相同。我期望的是,如果使用异步方法,线程池的大小应该会小得多。
我做错了什么吗?
谢谢