Class PartitionedHttpClientBuilder<U,R>
- java.lang.Object
-
- io.servicetalk.http.api.PartitionedHttpClientBuilder<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 PartitionedHttpClientBuilder<U,R> extends java.lang.ObjectA builder of homogeneousStreamingHttpClientinstances which call the server associated with a partition selected from a set ofPartitionedServiceDiscovererEvents resolved from a single unresolved address.Partition selection uses a function to infer
PartitionAttributesfrom theHttpRequestMetaData. 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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfacePartitionedHttpClientBuilder.SingleAddressInitializer<U,R>Initializes theSingleAddressHttpClientBuilderfor each new client.
-
Constructor Summary
Constructors Constructor Description PartitionedHttpClientBuilder()
-
Method Summary
-
-
-
Method Detail
-
ioExecutor
@Deprecated public abstract PartitionedHttpClientBuilder<U,R> ioExecutor(IoExecutor ioExecutor)
Deprecated.Sets theIoExecutorfor all connections created from this builder.- Parameters:
ioExecutor-IoExecutorto use.- Returns:
this.
-
executionStrategy
@Deprecated public abstract PartitionedHttpClientBuilder<U,R> executionStrategy(HttpExecutionStrategy strategy)
Deprecated.Sets theHttpExecutionStrategyfor all connections created from this builder.- Parameters:
strategy-HttpExecutionStrategyto use.- Returns:
this.
-
bufferAllocator
@Deprecated public abstract PartitionedHttpClientBuilder<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> PartitionedHttpClientBuilder<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 PartitionedHttpClientBuilder<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 PartitionedHttpClientBuilder<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 PartitionedHttpClientBuilder<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.
-
appendConnectionFilter
@Deprecated public abstract PartitionedHttpClientBuilder<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 PartitionedHttpClientBuilder<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 PartitionedHttpClientBuilder<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
-
disableHostHeaderFallback
@Deprecated public abstract PartitionedHttpClientBuilder<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:
MultiAddressHttpClientBuilder.unresolvedAddressToHost(Function)
-
allowDropResponseTrailers
@Deprecated public abstract PartitionedHttpClientBuilder<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
-
autoRetryStrategy
@Deprecated public abstract PartitionedHttpClientBuilder<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
public abstract PartitionedHttpClientBuilder<U,R> serviceDiscoverer(ServiceDiscoverer<U,R,PartitionedServiceDiscovererEvent<R>> serviceDiscoverer)
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
public abstract PartitionedHttpClientBuilder<U,R> retryServiceDiscoveryErrors(ServiceDiscoveryRetryStrategy<R,PartitionedServiceDiscovererEvent<R>> retryStrategy)
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 PartitionedHttpClientBuilder<U,R> loadBalancerFactory(HttpLoadBalancerFactory<R> loadBalancerFactory)
Deprecated.Sets aHttpLoadBalancerFactoryto createLoadBalancerinstances.- Parameters:
loadBalancerFactory-HttpLoadBalancerFactoryto createLoadBalancerinstances.- Returns:
this.
-
unresolvedAddressToHost
@Deprecated public abstract PartitionedHttpClientBuilder<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 PartitionedHttpClientBuilder<U,R> appendClientFilter(StreamingHttpClientFilterFactory function)
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:
function-StreamingHttpClientFilterFactoryto decorate aHttpClientfor the purpose of filtering.- Returns:
this
-
appendClientFilter
@Deprecated public PartitionedHttpClientBuilder<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
-
secure
@Deprecated public abstract PartitionedHttpClientSecurityConfigurator<U,R> secure()
Deprecated.Initiates security configuration for this client. CallingPartitionedHttpClientSecurityConfigurator.commit()on the returnedPartitionedHttpClientSecurityConfiguratorwill commit the configuration.- Returns:
PartitionHttpClientBuilderConfiguratorto configure security for this client. It is mandatory to callcommitafter all configuration is done.
-
serviceDiscoveryMaxQueueSize
public abstract PartitionedHttpClientBuilder<U,R> serviceDiscoveryMaxQueueSize(int serviceDiscoveryMaxQueueSize)
Sets the maximum amount ofServiceDiscovererEventobjects that will be queued for each partition.It is assumed that the
PublisherSource.Subscribers will process events in a timely manner (typically synchronously) so this typically doesn't need to be very large.- Parameters:
serviceDiscoveryMaxQueueSize- the maximum amount ofServiceDiscovererEventobjects that will be queued for each partition.- Returns:
this.
-
partitionMapFactory
public abstract PartitionedHttpClientBuilder<U,R> partitionMapFactory(PartitionMapFactory partitionMapFactory)
SetsPartitionMapFactoryto use by allStreamingHttpClients created by this builder.- Parameters:
partitionMapFactory-PartitionMapFactoryto use.- Returns:
this.
-
appendClientBuilderFilter
@Deprecated public abstract PartitionedHttpClientBuilder<U,R> appendClientBuilderFilter(PartitionHttpClientBuilderConfigurator<U,R> clientFilterFunction)
Deprecated.Sets a function that allows customizing theSingleAddressHttpClientBuilderused to create the client for a given partition based on itsPartitionAttributes.- Parameters:
clientFilterFunction-BiFunctionused to customize theSingleAddressHttpClientBuilderbefore creating the client for the partition- Returns:
this
-
initializer
public abstract PartitionedHttpClientBuilder<U,R> initializer(PartitionedHttpClientBuilder.SingleAddressInitializer<U,R> initializer)
Set a function which can customize options for eachStreamingHttpClientthat is built.- Parameters:
initializer- Initializes theSingleAddressHttpClientBuilderused to build newStreamingHttpClients.- 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
-
-