Class MultiAddressHttpClientBuilder<U,R>
- java.lang.Object
-
- io.servicetalk.http.api.MultiAddressHttpClientBuilder<U,R>
-
- Type Parameters:
U- the type of address before resolution (unresolved address)R- the type of address after resolution (resolved address)
public abstract class MultiAddressHttpClientBuilder<U,R> extends java.lang.ObjectA builder ofStreamingHttpClientinstances which have a capacity to call any server based on the parsed absolute-form URL address information from eachStreamingHttpRequest.It also provides a good set of default settings and configurations, which could be used by most users as-is or could be overridden to address specific use cases.
- See Also:
- absolute-form rfc7230#section-5.3.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceMultiAddressHttpClientBuilder.SingleAddressInitializer<U,R>Initializes theSingleAddressHttpClientBuilderfor each new client.
-
Constructor Summary
Constructors Constructor Description MultiAddressHttpClientBuilder()
-
Method Summary
-
-
-
Method Detail
-
ioExecutor
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> ioExecutor(IoExecutor ioExecutor)
Deprecated.Sets theIoExecutorfor all connections created from this builder.- Parameters:
ioExecutor-IoExecutorto use.- Returns:
this.
-
executionStrategy
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> executionStrategy(HttpExecutionStrategy strategy)
Deprecated.Sets theHttpExecutionStrategyfor all connections created from this builder.- Parameters:
strategy-HttpExecutionStrategyto use.- Returns:
this.
-
bufferAllocator
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> bufferAllocator(BufferAllocator allocator)
Deprecated.Sets theBufferAllocatorfor all connections created from this builder.- Parameters:
allocator-BufferAllocatorto use.- Returns:
this.
-
socketOption
@Deprecated public abstract <T> MultiAddressHttpClientBuilder<U,R> socketOption(java.net.SocketOption<T> option, T value)
Deprecated.Adds aSocketOptionfor all connections created by this builder.- Type Parameters:
T- the type of the value.- Parameters:
option- the option to apply.value- the value.- Returns:
this.- See Also:
StandardSocketOptions,ServiceTalkSocketOptions
-
enableWireLogging
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> enableWireLogging(java.lang.String loggerName)
Deprecated.Enables wire-logging for connections created by this builder.- Parameters:
loggerName- The name of the logger to log wire events.- Returns:
this.
-
enableWireLogging
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> enableWireLogging(java.lang.String loggerName, LogLevel logLevel, java.util.function.BooleanSupplier logUserData)
Deprecated.Enables wire-logging for connections created by this builder.- Parameters:
loggerName- The name of the logger to log wire events.logLevel- The level to log at.logUserData-trueto include user data (e.g. data, headers, etc.).falseto exclude user data and log only network events.- Returns:
this.
-
protocols
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> protocols(HttpProtocolConfig... protocols)
Deprecated.Configurations of various HTTP protocol versions.Note: the order of specified protocols will reflect on priorities for ALPN in case the connections use TLS.
- Parameters:
protocols-HttpProtocolConfigfor each protocol that should be supported.- Returns:
this.
-
disableHostHeaderFallback
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> disableHostHeaderFallback()
Deprecated.Disables automatically settingHostheaders by inferring from the address orHttpMetaData.This setting disables the default filter such that no
Hostheader will be manipulated.- Returns:
this- See Also:
unresolvedAddressToHost(Function)
-
allowDropResponseTrailers
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> allowDropResponseTrailers(boolean allowDrop)
Deprecated.Provide a hint if response trailers are allowed to be dropped. This hint maybe ignored if the transport can otherwise infer that trailers should be preserved. For example, if the response headers contain Trailer then this hint maybe ignored.- Parameters:
allowDrop-trueif response trailers are allowed to be dropped.- Returns:
this
-
secure
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> secure(java.util.function.BiConsumer<HostAndPort,ClientSecurityConfigurator> sslConfigFunction)
Deprecated.Sets a function that is used for configuring SSL/TLS for https requests.- Parameters:
sslConfigFunction- The function to use for configuring SSL/TLS for https requests.- Returns:
this
-
initializer
public abstract MultiAddressHttpClientBuilder<U,R> initializer(MultiAddressHttpClientBuilder.SingleAddressInitializer<U,R> initializer)
Set a function which can customize options for eachStreamingHttpClientthat is built.- Parameters:
initializer- Initializes theSingleAddressHttpClientBuilderused to build newStreamingHttpClients.- Returns:
this
-
appendConnectionFilter
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> appendConnectionFilter(StreamingHttpConnectionFilterFactory factory)
Deprecated.Appends the filter to the chain of filters used to decorate theStreamingHttpConnectioncreated by this builder.Filtering allows you to wrap a
StreamingHttpConnectionand modify behavior during request/response processing Some potential candidates for filtering include logging, metrics, and decorating responses.The order of execution of these filters are in order of append. If 3 filters are added as follows:
builder.append(filter1).append(filter2).append(filter3)making a request to a connection wrapped by this filter chain the order of invocation of these filters will be:filter1 => filter2 => filter3 => connection- Parameters:
factory-StreamingHttpConnectionFilterFactoryto decorate aStreamingHttpConnectionfor the purpose of filtering.- Returns:
this
-
appendConnectionFilter
@Deprecated public MultiAddressHttpClientBuilder<U,R> appendConnectionFilter(java.util.function.Predicate<StreamingHttpRequest> predicate, StreamingHttpConnectionFilterFactory factory)
Deprecated.Appends the filter to the chain of filters used to decorate theStreamingHttpConnectioncreated by this builder, for every request that passes the providedPredicate.Filtering allows you to wrap a
StreamingHttpConnectionand modify behavior during request/response processing Some potential candidates for filtering include logging, metrics, and decorating responses.The order of execution of these filters are in order of append. If 3 filters are added as follows:
builder.append(filter1).append(filter2).append(filter3)making a request to a connection wrapped by this filter chain the order of invocation of these filters will be:filter1 => filter2 => filter3 => connection- Parameters:
predicate- thePredicateto test if the filter must be applied.factory-StreamingHttpConnectionFilterFactoryto decorate aStreamingHttpConnectionfor the purpose of filtering.- Returns:
this
-
appendConnectionFactoryFilter
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> appendConnectionFactoryFilter(ConnectionFactoryFilter<R,FilterableStreamingHttpConnection> factory)
Deprecated.Appends the filter to the chain of filters used to decorate theConnectionFactoryused by this builder.Filtering allows you to wrap a
ConnectionFactoryand modify behavior ofConnectionFactory.newConnection(Object, TransportObserver). Some potential candidates for filtering include logging and metrics.The order of execution of these filters are in order of append. If 3 filters are added as follows:
builder.append(filter1).append(filter2).append(filter3)CallingConnectionFactorywrapped by this filter chain, the order of invocation of these filters will be:filter1 => filter2 => filter3 => original connection factory- Parameters:
factory-ConnectionFactoryFilterto use.- Returns:
this
-
autoRetryStrategy
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> autoRetryStrategy(AutoRetryStrategyProvider autoRetryStrategyProvider)
Deprecated.Updates the automatic retry strategy for the clients generated by this builder. Automatic retries are done by the clients automatically when allowed by the passedAutoRetryStrategyProvider. These retries are not a substitute for user level retries which are designed to infer retry decisions based on request/error information. Typically such user level retries are done using filters (eg:appendClientFilter(StreamingHttpClientFilterFactory)) but can also be done differently per request (eg: by usingSingle.retry(BiIntPredicate)).- Parameters:
autoRetryStrategyProvider-AutoRetryStrategyProviderfor the automatic retry strategy.- Returns:
this
-
serviceDiscoverer
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> serviceDiscoverer(ServiceDiscoverer<U,R,ServiceDiscovererEvent<R>> serviceDiscoverer)
Deprecated.Sets aServiceDiscovererto resolve addresses of remote servers to connect to.- Parameters:
serviceDiscoverer- TheServiceDiscovererto resolve addresses of remote servers to connect to. Lifecycle of the providedServiceDiscovereris managed externally and it should beclosedafter all builtStreamingHttpClients will be closed and thisServiceDiscovereris no longer needed.- Returns:
this.
-
retryServiceDiscoveryErrors
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> retryServiceDiscoveryErrors(ServiceDiscoveryRetryStrategy<R,ServiceDiscovererEvent<R>> retryStrategy)
Deprecated.Sets a retry strategy to retry errors emitted byServiceDiscoverer.- Parameters:
retryStrategy- a retry strategy to retry errors emitted byServiceDiscoverer.- Returns:
this.
-
loadBalancerFactory
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> loadBalancerFactory(HttpLoadBalancerFactory<R> loadBalancerFactory)
Deprecated.Sets aHttpLoadBalancerFactoryto createLoadBalancerinstances.- Parameters:
loadBalancerFactory-HttpLoadBalancerFactoryto createLoadBalancerinstances.- Returns:
this.
-
unresolvedAddressToHost
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> unresolvedAddressToHost(java.util.function.Function<U,java.lang.CharSequence> unresolvedAddressToHostFunction)
Deprecated.Provides a means to convertHttpClientBuilderunresolved address type into aCharSequence. An example of where this maybe used is to convert theHttpClientBuilderto a default host header. It may also be used in the event of proxying.- Parameters:
unresolvedAddressToHostFunction- invoked to convert theHttpClientBuilderunresolved address type into aCharSequencesuitable for use in Host Header format.- Returns:
this
-
appendClientFilter
@Deprecated public abstract MultiAddressHttpClientBuilder<U,R> appendClientFilter(StreamingHttpClientFilterFactory factory)
Deprecated.Appends the filter to the chain of filters used to decorate theHttpClientcreated by this builder.Note this method will be used to decorate the result of
build()before it is returned to the user.The order of execution of these filters are in order of append. If 3 filters are added as follows:
builder.append(filter1).append(filter2).append(filter3)making a request to a client wrapped by this filter chain the order of invocation of these filters will be:filter1 => filter2 => filter3 => client- Parameters:
factory-StreamingHttpClientFilterFactoryto decorate aHttpClientfor the purpose of filtering.- Returns:
this
-
appendClientFilter
@Deprecated public MultiAddressHttpClientBuilder<U,R> appendClientFilter(java.util.function.Predicate<StreamingHttpRequest> predicate, StreamingHttpClientFilterFactory factory)
Deprecated.Appends the filter to the chain of filters used to decorate theHttpClientcreated by this builder, for every request that passes the providedPredicate.Note this method will be used to decorate the result of
build()before it is returned to the user.The order of execution of these filters are in order of append. If 3 filters are added as follows:
builder.append(filter1).append(filter2).append(filter3)making a request to a client wrapped by this filter chain the order of invocation of these filters will be:filter1 => filter2 => filter3 => client- Parameters:
predicate- thePredicateto test if the filter must be applied.factory-StreamingHttpClientFilterFactoryto decorate aHttpClientfor the purpose of filtering.- Returns:
this
-
appendClientFilter
public abstract MultiAddressHttpClientBuilder<U,R> appendClientFilter(MultiAddressHttpClientFilterFactory<U> factory)
Appends the filter to the chain of filters used to decorate theStreamingHttpClientcreated by this builder for a givenUnresolvedAddress.Note this method will be used to decorate the result of
buildStreaming()before it is returned to the user.The order of execution of these filters are in order of append. If 3 filters are added as follows:
builder.append(filter1).append(filter2).append(filter3)Making a request to a client wrapped by this filter chain the order of invocation of these filters will be:filter1 => filter2 => filter3 => client- Parameters:
factory-MultiAddressHttpClientFilterFactoryto decorate aStreamingHttpClientfor the purpose of filtering.- Returns:
this
-
appendClientFilter
public MultiAddressHttpClientBuilder<U,R> appendClientFilter(java.util.function.Predicate<StreamingHttpRequest> predicate, MultiAddressHttpClientFilterFactory<U> factory)
Appends the filter to the chain of filters used to decorate theStreamingHttpClientcreated by this builder for a givenUnresolvedAddress, for every request that passes the providedPredicate.Note this method will be used to decorate the result of
buildStreaming()before it is returned to the user.The order of execution of these filters are in order of append. If 3 filters are added as follows:
builder.append(filter1).append(filter2).append(filter3)Making a request to a client wrapped by this filter chain the order of invocation of these filters will be:filter1 => filter2 => filter3 => client- Parameters:
predicate- thePredicateto test if the filter must be applied.factory-MultiAddressHttpClientFilterFactoryto decorate aStreamingHttpClientfor the purpose of filtering.- Returns:
this
-
maxRedirects
public abstract MultiAddressHttpClientBuilder<U,R> maxRedirects(int maxRedirects)
Sets a maximum number of redirects to follow.- Parameters:
maxRedirects- A maximum number of redirects to follow.0disables redirects.- Returns:
this.
-
buildStreaming
public abstract StreamingHttpClient buildStreaming()
Builds a newStreamingHttpClient, using a defaultExecutionContext.- Returns:
- A new
StreamingHttpClient
-
build
public final HttpClient build()
Builds a newHttpClient, using a defaultExecutionContext.- Returns:
- A new
HttpClient
-
buildBlockingStreaming
public final BlockingStreamingHttpClient buildBlockingStreaming()
Creates a newBlockingStreamingHttpClient, using a defaultExecutionContext.- Returns:
BlockingStreamingHttpClient
-
buildBlocking
public final BlockingHttpClient buildBlocking()
Creates a newBlockingHttpClient, using a defaultExecutionContext.- Returns:
BlockingHttpClient
-
-