Class HttpAsyncClientBuilder

  • Direct Known Subclasses:
    CachingHttpAsyncClientBuilder

    public class HttpAsyncClientBuilder
    extends java.lang.Object
    Builder for CloseableHttpAsyncClient instances that can negotiate the most optimal HTTP protocol version during the TLS handshake with ALPN extension if supported by the Java runtime.

    Concurrent message exchanges executed by CloseableHttpAsyncClient instances created with this builder will get automatically assigned to separate connections leased from the connection pool.

    When a particular component is not explicitly set this class will use its default implementation. System properties will be taken into account when configuring the default implementations when useSystemProperties() method is called prior to calling build().

    • http.proxyHost
    • http.proxyPort
    • https.proxyHost
    • https.proxyPort
    • http.nonProxyHosts
    • http.keepAlive
    • http.agent

    Please note that some settings used by this class can be mutually exclusive and may not apply when building CloseableHttpAsyncClient instances.

    Since:
    5.0
    • Field Detail

      • tlsConfig

        @Deprecated
        private TlsConfig tlsConfig
        Deprecated.
        TLS should be configured by the connection manager
      • connManagerShared

        private boolean connManagerShared
      • ioReactorConfig

        private org.apache.hc.core5.reactor.IOReactorConfig ioReactorConfig
      • ioSessionListener

        private org.apache.hc.core5.reactor.IOSessionListener ioSessionListener
      • ioReactorExceptionCallback

        private org.apache.hc.core5.function.Callback<java.lang.Exception> ioReactorExceptionCallback
      • h1Config

        private org.apache.hc.core5.http.config.Http1Config h1Config
      • h2Config

        private org.apache.hc.core5.http2.config.H2Config h2Config
      • charCodingConfig

        private org.apache.hc.core5.http.config.CharCodingConfig charCodingConfig
      • ioSessionDecorator

        private org.apache.hc.core5.function.Decorator<org.apache.hc.core5.reactor.IOSession> ioSessionDecorator
      • reuseStrategy

        private org.apache.hc.core5.http.ConnectionReuseStrategy reuseStrategy
      • authSchemeRegistry

        private org.apache.hc.core5.http.config.Lookup<AuthSchemeFactory> authSchemeRegistry
      • cookieSpecRegistry

        private org.apache.hc.core5.http.config.Lookup<CookieSpecFactory> cookieSpecRegistry
      • userAgent

        private java.lang.String userAgent
      • proxy

        private org.apache.hc.core5.http.HttpHost proxy
      • defaultHeaders

        private java.util.Collection<? extends org.apache.hc.core5.http.Header> defaultHeaders
      • defaultRequestConfig

        private RequestConfig defaultRequestConfig
      • evictExpiredConnections

        private boolean evictExpiredConnections
      • evictIdleConnections

        private boolean evictIdleConnections
      • maxIdleTime

        private org.apache.hc.core5.util.TimeValue maxIdleTime
      • systemProperties

        private boolean systemProperties
      • automaticRetriesDisabled

        private boolean automaticRetriesDisabled
      • redirectHandlingDisabled

        private boolean redirectHandlingDisabled
      • cookieManagementDisabled

        private boolean cookieManagementDisabled
      • authCachingDisabled

        private boolean authCachingDisabled
      • connectionStateDisabled

        private boolean connectionStateDisabled
      • threadFactory

        private java.util.concurrent.ThreadFactory threadFactory
      • closeables

        private java.util.List<java.io.Closeable> closeables
      • proxySelector

        private java.net.ProxySelector proxySelector
    • Constructor Detail

      • HttpAsyncClientBuilder

        protected HttpAsyncClientBuilder()
    • Method Detail

      • setVersionPolicy

        @Deprecated
        public final HttpAsyncClientBuilder setVersionPolicy​(org.apache.hc.core5.http2.HttpVersionPolicy versionPolicy)
        Deprecated.
        Use TlsConfig and connection manager methods
        Sets HTTP protocol version policy.
      • setHttp1Config

        public final HttpAsyncClientBuilder setHttp1Config​(org.apache.hc.core5.http.config.Http1Config h1Config)
        Sets Http1Config configuration.
      • setH2Config

        public final HttpAsyncClientBuilder setH2Config​(org.apache.hc.core5.http2.config.H2Config h2Config)
        Sets H2Config configuration.
      • setConnectionManagerShared

        public final HttpAsyncClientBuilder setConnectionManagerShared​(boolean shared)
        Defines the connection manager is to be shared by multiple client instances.

        If the connection manager is shared its life-cycle is expected to be managed by the caller and it will not be shut down if the client is closed.

        Parameters:
        shared - defines whether or not the connection manager can be shared by multiple clients.
      • setIOReactorConfig

        public final HttpAsyncClientBuilder setIOReactorConfig​(org.apache.hc.core5.reactor.IOReactorConfig ioReactorConfig)
        Sets IOReactorConfig configuration.
      • setIOSessionListener

        public final HttpAsyncClientBuilder setIOSessionListener​(org.apache.hc.core5.reactor.IOSessionListener ioSessionListener)
        Sets IOSessionListener listener.
        Since:
        5.2
      • setIoReactorExceptionCallback

        public final HttpAsyncClientBuilder setIoReactorExceptionCallback​(org.apache.hc.core5.function.Callback<java.lang.Exception> ioReactorExceptionCallback)
        Sets the callback that will be invoked when the client's IOReactor encounters an uncaught exception.
        Since:
        5.1
      • setCharCodingConfig

        public final HttpAsyncClientBuilder setCharCodingConfig​(org.apache.hc.core5.http.config.CharCodingConfig charCodingConfig)
        Sets CharCodingConfig configuration.
      • setConnectionReuseStrategy

        public final HttpAsyncClientBuilder setConnectionReuseStrategy​(org.apache.hc.core5.http.ConnectionReuseStrategy reuseStrategy)
        Assigns ConnectionReuseStrategy instance.

        Please note this strategy applies to HTTP/1.0 and HTTP/1.1 connections only

      • setIoSessionDecorator

        public final HttpAsyncClientBuilder setIoSessionDecorator​(org.apache.hc.core5.function.Decorator<org.apache.hc.core5.reactor.IOSession> ioSessionDecorator)
        Sets the IOSession Decorator that will be use with the client's IOReactor.
        Since:
        5.2
      • addResponseInterceptorFirst

        public final HttpAsyncClientBuilder addResponseInterceptorFirst​(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)
        Adds this protocol interceptor to the head of the protocol processing list.
      • addResponseInterceptorLast

        public final HttpAsyncClientBuilder addResponseInterceptorLast​(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)
        Adds this protocol interceptor to the tail of the protocol processing list.
      • addExecInterceptorBefore

        public final HttpAsyncClientBuilder addExecInterceptorBefore​(java.lang.String existing,
                                                                     java.lang.String name,
                                                                     AsyncExecChainHandler interceptor)
        Adds this execution interceptor before an existing interceptor.
      • addExecInterceptorAfter

        public final HttpAsyncClientBuilder addExecInterceptorAfter​(java.lang.String existing,
                                                                    java.lang.String name,
                                                                    AsyncExecChainHandler interceptor)
        Adds this execution interceptor after interceptor with the given name.
      • replaceExecInterceptor

        public final HttpAsyncClientBuilder replaceExecInterceptor​(java.lang.String existing,
                                                                   AsyncExecChainHandler interceptor)
        Replace an existing interceptor with the given name with new interceptor.
      • addRequestInterceptorFirst

        public final HttpAsyncClientBuilder addRequestInterceptorFirst​(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)
        Adds this protocol interceptor to the head of the protocol processing list.
      • addRequestInterceptorLast

        public final HttpAsyncClientBuilder addRequestInterceptorLast​(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)
        Adds this protocol interceptor to the tail of the protocol processing list.
      • setThreadFactory

        public final HttpAsyncClientBuilder setThreadFactory​(java.util.concurrent.ThreadFactory threadFactory)
        Assigns ThreadFactory instance.
      • setUserAgent

        public final HttpAsyncClientBuilder setUserAgent​(java.lang.String userAgent)
        Assigns User-Agent value.
      • setDefaultHeaders

        public final HttpAsyncClientBuilder setDefaultHeaders​(java.util.Collection<? extends org.apache.hc.core5.http.Header> defaultHeaders)
        Assigns default request header values.
      • setProxySelector

        public final HttpAsyncClientBuilder setProxySelector​(java.net.ProxySelector proxySelector)
        Sets the ProxySelector that will be used to select the proxies to be used for establishing HTTP connections. If a non-null proxy selector is set, it will take precedence over the proxy settings configured in the client.
        Parameters:
        proxySelector - the ProxySelector to be used, or null to use the default system proxy selector.
        Returns:
        this HttpAsyncClientBuilder instance, to allow for method chaining.
      • setDefaultAuthSchemeRegistry

        public final HttpAsyncClientBuilder setDefaultAuthSchemeRegistry​(org.apache.hc.core5.http.config.Lookup<AuthSchemeFactory> authSchemeRegistry)
        Assigns default AuthScheme registry which will be used for request execution if not explicitly set in the client execution context.
      • setDefaultCookieSpecRegistry

        public final HttpAsyncClientBuilder setDefaultCookieSpecRegistry​(org.apache.hc.core5.http.config.Lookup<CookieSpecFactory> cookieSpecRegistry)
        Assigns default CookieSpec registry which will be used for request execution if not explicitly set in the client execution context.
      • setDefaultCookieStore

        public final HttpAsyncClientBuilder setDefaultCookieStore​(CookieStore cookieStore)
        Assigns default CookieStore instance which will be used for request execution if not explicitly set in the client execution context.
      • setDefaultRequestConfig

        public final HttpAsyncClientBuilder setDefaultRequestConfig​(RequestConfig config)
        Assigns default RequestConfig instance which will be used for request execution if not explicitly set in the client execution context.
      • useSystemProperties

        public final HttpAsyncClientBuilder useSystemProperties()
        Use system properties when creating and configuring default implementations.
      • disableConnectionState

        public final HttpAsyncClientBuilder disableConnectionState()
        Disables connection state tracking.
      • disableRedirectHandling

        public final HttpAsyncClientBuilder disableRedirectHandling()
        Disables automatic redirect handling.
      • disableAutomaticRetries

        public final HttpAsyncClientBuilder disableAutomaticRetries()
        Disables automatic request recovery and re-execution.
      • disableCookieManagement

        public final HttpAsyncClientBuilder disableCookieManagement()
        Disables state (cookie) management.
      • disableAuthCaching

        public final HttpAsyncClientBuilder disableAuthCaching()
        Disables authentication scheme caching.
      • evictExpiredConnections

        public final HttpAsyncClientBuilder evictExpiredConnections()
        Makes this instance of HttpClient proactively evict expired connections from the connection pool using a background thread.

        One MUST explicitly close HttpClient with Closeable.close() in order to stop and release the background thread.

        Please note this method has no effect if the instance of HttpClient is configured to use a shared connection manager.

        See Also:
        setConnectionManagerShared(boolean), ConnPoolControl.closeExpired()
      • evictIdleConnections

        public final HttpAsyncClientBuilder evictIdleConnections​(org.apache.hc.core5.util.TimeValue maxIdleTime)
        Makes this instance of HttpClient proactively evict idle connections from the connection pool using a background thread.

        One MUST explicitly close HttpClient with Closeable.close() in order to stop and release the background thread.

        Please note this method has no effect if the instance of HttpClient is configured to use a shared connection manager.

        Parameters:
        maxIdleTime - maximum time persistent connections can stay idle while kept alive in the connection pool. Connections whose inactivity period exceeds this value will get closed and evicted from the pool.
        See Also:
        setConnectionManagerShared(boolean), ConnPoolControl.closeIdle(TimeValue)
      • customizeExecChain

        @Internal
        protected void customizeExecChain​(org.apache.hc.core5.http.config.NamedElementChain<AsyncExecChainHandler> execChainDefinition)
        Request exec chain customization and extension.

        For internal use.

      • addCloseable

        @Internal
        protected void addCloseable​(java.io.Closeable closeable)
        Adds to the list of Closeable resources to be managed by the client.

        For internal use.

      • getProperty

        private java.lang.String getProperty​(java.lang.String key,
                                             java.lang.String defaultValue)