聊聊AsyncHttpClient的ListenableFuture

2023-12-17
阅读 10 分钟
6.6k
ListenableFuture继承了java.util.concurrent.Future,它定义了done、abort、touch、addListener、toCompletableFuture方法

聊聊AsyncHttpClient的SignatureCalculator

2023-12-16
阅读 7 分钟
192
SignatureCalculator定义了calculateAndAddSignature接口,它首先计算签名,然后添加到requestBuilder

聊聊AsyncHttpClient的ClientStats

2023-12-15
阅读 5 分钟
179
ClientStats通过Map<String, HostStats>维护了每个host对应的统计;它提供了getStatsPerHost、getTotalConnectionCount、getTotalActiveConnectionCount、getTotalIdleConnectionCount方法

聊聊AsyncHttpClient的TimeoutTimerTask

2023-12-14
阅读 12 分钟
96
序本文主要研究一下AsyncHttpClient的TimeoutTimerTaskTimerTaskio/netty/util/TimerTask.java {代码...} netty的TimerTask接口定义了run方法,其入参为TimeoutTimeoutio/netty/util/Timeout.java {代码...} Timeout接口定义了timer()、task()、isExpired()、isCancelled()、cancel()方法TimeoutTimerTaskorg/asynchttpc...

聊聊AsyncHttpClient的IOExceptionFilter

2023-12-13
阅读 6 分钟
146
序本文主要研究一下AsyncHttpClient的IOExceptionFilterIOExceptionFilterorg/asynchttpclient/filter/IOExceptionFilter.java {代码...} IOExceptionFilter接口定义了filter方法,在捕获到IOException的时候执行ResumableIOExceptionFilterorg/asynchttpclient/handler/resumable/ResumableIOExceptionFilter.java {代...

聊聊AsyncHttpClient的RequestFilter

2023-12-12
阅读 6 分钟
121
序本文主要研究一下AsyncHttpClient的RequestFilterRequestFilterorg/asynchttpclient/filter/RequestFilter.java {代码...} RequestFilter定义了filter方法ThrottleRequestFilterorg/asynchttpclient/filter/ThrottleRequestFilter.java {代码...} ThrottleRequestFilter实现了RequestFilter接口,它使用Semaphore来对r...

聊聊AsyncHttpClient的KeepAliveStrategy

2023-12-11
阅读 6 分钟
130
序本文主要研究一下AsyncHttpClient的KeepAliveStrategyKeepAliveStrategyorg/asynchttpclient/channel/KeepAliveStrategy.java {代码...} KeepAliveStrategy接口定义了keepAlive方法用于决定是否对该connection进行keep aliveDefaultKeepAliveStrategyorg/asynchttpclient/channel/DefaultKeepAliveStrategy.java {代码...

聊聊AsyncHttpClient的exception

2023-12-10
阅读 5 分钟
198
序本文主要研究一下AsyncHttpClient的exceptionChannelClosedExceptionorg/asynchttpclient/exception/ChannelClosedException.java {代码...} ChannelClosedException用于表示Channel closed的异常handleUnexpectedClosedChannelorg/asynchttpclient/netty/request/NettyRequestSender.java {代码...} NettyRequestSend...

聊聊AsyncHttpClient的ChannelPool

2023-12-08
阅读 13 分钟
118
ChannelPool定义了offer、poll、removeAll、isOpen、destroy、flushPartitions、getIdleChannelCountPerHost方法,它有两个实现类,分别是NoopChannelPool及DefaultChannelPool

聊聊AsyncHttpClient的ConnectionSemaphore

2023-12-07
阅读 14 分钟
164
ConnectionSemaphore主要用于控制连接的maxConnections及maxConnectionsPerHost;它定义了freeChannels表示可用连接的信号量,定义了freeChannelsPerHost维护每个host的可用连接新用量,类型是NonBlockingSemaphoreLike;它提供了tryAcquireGlobal用于获取全局的空闲连接,tryAcquirePerHost用于获取指定host的空闲连接...

聊聊AsyncHttpClient的默认配置

2023-12-06
阅读 10 分钟
208
AsyncHttpClientConfig接口定义了一系列获取配置的接口,比如getMaxConnections、getConnectTimeout、getReadTimeout、getPooledConnectionIdleTimeout等

聊聊httpclient的ConnectionHolder

2023-11-28
阅读 9 分钟
246
序本文主要研究一下httpclient的ConnectionHolderConnectionReleaseTriggerorg/apache/http/conn/ConnectionReleaseTrigger.java {代码...} ConnectionReleaseTrigger定义了releaseConnection、abortConnection方法ConnectionHolderorg/apache/http/impl/execchain/ConnectionHolder.java {代码...} ConnectionHolder实...

聊聊httpclient的connect

2023-11-26
阅读 8 分钟
218
HttpClientConnectionOperator定义了connect及upgrade方法,它有一个默认的实现类为DefaultHttpClientConnectionOperator

聊聊httpclient的getPoolEntryBlocking

2023-11-25
阅读 9 分钟
217
AbstractConnPool提供了getPoolEntryBlocking,lease内部就是通过这个方法来获取连接的。它主要是通过pool.getFree获取空闲连接,然后进行过期判断,再判断是否close,如果已经close则从available中移除,获取成功的话则从available移除,添加到leased然后返回。如果获取不到则先判断连接是否超出maxPerRoute,超出则先...

聊聊httpclient的staleConnectionCheckEnabled

2023-11-24
阅读 15 分钟
235
RequestConfig定义了staleConnectionCheckEnabled属性,在4.4版本废弃了,默认为false,替换设置是org.apache.http.impl.conn.PoolingHttpClientConnectionManager.setValidateAfterInactivity(int);Builder方法也提供了setStaleConnectionCheckEnabled方法

聊聊httpclient的disableConnectionState

2023-11-19
阅读 5 分钟
205
HttpClientBuilder提供了disableConnectionState方法可以设置connectionStateDisabled为true,在该值为true时userTokenHandlerCopy为NoopUserTokenHandler.INSTANCE,而userTokenHandlerCopy是作为创建ClientExecChain(MainClientExec)的参数之一

聊聊httpclient的validateAfterInactivity

2023-11-18
阅读 9 分钟
355
AbstractConnPool定义了validateAfterInactivity属性,与defaultMaxPerRoute、maxTotal不同,该属性没有在构造器参数中,而是提供了setter来设置

聊聊HttpClient的close

2023-10-26
阅读 6 分钟
200
序本文主要研究一下HttpClient的closeCloseableHttpClientorg/apache/http/impl/client/CloseableHttpClient.java {代码...} CloseableHttpClient声明实现HttpClient, Closeable接口InternalHttpClientorg/apache/http/impl/client/InternalHttpClient.java {代码...} InternalHttpClient继承了CloseableHttpClient,其...

聊聊HttpClient的RedirectStrategy

2023-10-18
阅读 10 分钟
257
RedirectStrategy接口定义了isRedirected方法用于判断是否需要redirect,还定义了getRedirect方法用于返回redirect的目标地址

聊聊HttpClient的DnsResolver

2023-10-17
阅读 7 分钟
313
序本文主要研究一下HttpClient的DnsResolverDnsResolverorg/apache/http/conn/DnsResolver.java {代码...} DnsResolver定义了resolve方法,可用于替换OS提供的DNS lookupInMemoryDnsResolverorg/apache/http/impl/conn/InMemoryDnsResolver.java {代码...} InMemoryDnsResolver实现了DnsResolver接口,它用一个Concurren...

聊聊HttpClient的HttpRoutePlanner

2023-10-16
阅读 5 分钟
254
序本文主要研究一下HttpClient的HttpRoutePlannerHttpRoutePlannerorg/apache/http/conn/routing/HttpRoutePlanner.java {代码...} HttpRoutePlanner接口定义了determineRoute方法,用于决定该请求的目标routeDefaultRoutePlannerorg/apache/http/impl/conn/DefaultRoutePlanner.java {代码...} DefaultRoutePlanner实现...

聊聊HttpClient的BackoffManager

2023-10-15
阅读 6 分钟
173
BackoffManager接口主要用于根据connection的情况来动态调整连接池的connection大小,它定义了backOff方法用于缩小连接数,probe方法用于扩大连接数

聊聊HttpClient的ConnectionBackoffStrategy

2023-10-14
阅读 5 分钟
239
序本文主要研究一下HttpClient的ConnectionBackoffStrategyConnectionBackoffStrategyorg/apache/http/client/ConnectionBackoffStrategy.java {代码...} ConnectionBackoffStrategy定义了shouldBackoff方法,它根据异常或者response来进行判断NullBackoffStrategyorg/apache/http/impl/client/NullBackoffStrategy.java...

聊聊HttpClient的ServiceUnavailableRetryStrategy

2023-10-13
阅读 5 分钟
172
ServiceUnavailableRetryStrategy定义了retryRequest方法用于返回是否该重试,getRetryInterval返回自动重试的间隔

聊聊HttpClient的重试机制

2023-10-12
阅读 12 分钟
464
HttpRequestRetryHandler接口定义了retryRequest方法,它接收IOException、executionCount及context,然后判断是否可以重试

聊聊HttpClient的NoHttpResponseException

2023-10-11
阅读 3 分钟
181
序本文主要研究一下HttpClient的NoHttpResponseExceptionNoHttpResponseExceptionorg/apache/http/NoHttpResponseException.java {代码...} NoHttpResponseException继承了IOException,用于表示目标服务器没有返回一个正常的http responseDefaultHttpResponseParserorg/apache/http/impl/conn/DefaultHttpResponseParse...

聊聊HttpClient的KeepAlive

2023-10-10
阅读 10 分钟
329
ConnectionKeepAliveStrategy接口定义了getKeepAliveDuration方法,用于返回该connection空间多久以内被复用是安全的

聊聊HttpClient的ResponseHandler

2023-10-09
阅读 6 分钟
179
序本文主要研究一下HttpClient的ResponseHandlerResponseHandlerorg/apache/http/client/ResponseHandler.java {代码...} ResponseHandler定义了handleResponse方法,用于解析HttpResponse到泛型TAbstractResponseHandlerorg/apache/http/impl/client/AbstractResponseHandler.java {代码...} AbstractResponseHandler声...

聊聊RestTemplate对HttpClient的适配

2023-10-08
阅读 11 分钟
189
org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java

聊聊httpclient的监控

2023-10-07
阅读 11 分钟
241
micrometer-core-1.3.0-sources.jar!/io/micrometer/core/instrument/binder/httpcomponents/MicrometerHttpRequestExecutor.java