使用同步HttpClient
时,很容易得到一个请求的时间,只需放在方法System.currentTimeMillis()
的前后即可execute()
。
但是说到HttpAsyncClient
,execute()
是异步的,它只会将任务放入队列中。所以我不知道如何获得连接的开始时间。
一个连接的结束时间很简单,在类实例System.currentTimeMillis()
的方法中调用即可OnComplete()
FutureCallback<HttpResponse>
同步HttpClient
和异步HttpAsyncClient
都具有三个阶段,ConnectRequestTime
,ConnectTime
,SocketTime
。所有请求将在实际执行之前排队。如果我们调用long start=System.currentTimeMillis()
,HttpAsyncRequestProducer.html#generateRequest()
我们只记下请求发送到内部队列的开始时间,所以最后你得到的是 ConnectRequestTime
++ ConnectTime
,SocketTime
当你做一个基准测试一个批处理请求时,很好,但是测试每个请求,我们需要减去ConnectRequestTime
.
所以我真正的问题是如何获得时间ConnectRequestTime
?