使用HttpAsyncClient

时间:2015-08-23 12:26:41

标签: httpclient apache-httpclient-4.x apache-httpasyncclient

使用同步HttpClient时,很容易获得一个请求的时间,只需在System.currentTimeMillis()方法之前和之后放置execute()

但是当谈到HttpAsyncClient时,execute()是异步的,这只会将任务放入队列中。所以我不知道如何获得连接的开始时间。

连接的结束时间很简单,只需在类实例System.currentTimeMillis()的{​​{1}}方法中调用OnComplete()

同步FutureCallback<HttpResponse>和异步HttpClient都有三个阶段,HttpAsyncClientConnectRequestTimeConnectTime。在实际执行之前,所有请求都将排队。如果我们在SocketTime中调用long start=System.currentTimeMillis(),我们只需记下请求发送到内部队列的开始时间,所以最后得到的是HttpAsyncRequestProducer.html#generateRequest() + {{1 } + ConnectRequestTime,当您执行基准测试批处理请求时,没关系,但要测试每个请求,我们需要减去ConnectTime

所以我真正的问题是如何获得SocketTime的时间?

1 个答案:

答案 0 :(得分:0)

HttpAsyncRequestProducer.html#generateRequest()应该是正确的地方。

您可能还想看一下this作为在进行微基准测试时如何从Apache HttpAsyncClient中挤出最大性能的示例。