Class HealthCheckedEndpointGroupBuilder
java.lang.Object
com.linecorp.armeria.client.endpoint.AbstractDynamicEndpointGroupBuilder
com.linecorp.armeria.client.endpoint.healthcheck.AbstractHealthCheckedEndpointGroupBuilder
com.linecorp.armeria.client.endpoint.healthcheck.HealthCheckedEndpointGroupBuilder
- All Implemented Interfaces:
DynamicEndpointGroupSetters
public final class HealthCheckedEndpointGroupBuilder
extends AbstractHealthCheckedEndpointGroupBuilder
A builder for creating a new
HealthCheckedEndpointGroup
that sends HTTP health check requests.-
Method Summary
Modifier and TypeMethodDescriptionallowEmptyEndpoints
(boolean allowEmptyEndpoints) Sets whether to allow an emptyEndpoint
list.Sets theAuthToken
header usingHttpHeaderNames.AUTHORIZATION
.clientFactory
(ClientFactory clientFactory) Sets theClientFactory
to use when making health check requests.clientOptions
(ClientOptions options) Sets theClientOptions
of theClient
that sends health check requests.maxEndpointCount
(int maxEndpointCount) Sets the maximum endpoint count of target selected candidates.maxEndpointRatio
(double maxEndpointRatio) Sets the maximum endpoint ratio of target selected candidates.protected Function<? super HealthCheckerContext,
? extends AsyncCloseable> Returns theFunction
that starts to send health check requests to theEndpoint
specified in a givenHealthCheckerContext
when invoked.port
(int port) Sets the port where a health check request will be sent instead of the original port number specified byEndpointGroup
'sEndpoint
s.protocol
(SessionProtocol protocol) Sets theSessionProtocol
to be used when making health check requests.retryBackoff
(Backoff retryBackoff) Sets the backoff between health check requests.retryInterval
(Duration retryInterval) Sets the interval between health check requests.retryIntervalMillis
(long retryIntervalMillis) Sets the interval between health check requests in milliseconds.selectionTimeout
(Duration selectionTimeout) Sets the timeout to wait until a successfulEndpoint
selection.selectionTimeout
(Duration initialSelectionTimeout, Duration selectionTimeout) Sets the timeouts to wait until a successfulEndpoint
selection.selectionTimeoutMillis
(long selectionTimeoutMillis) Sets the timeout to wait until a successfulEndpoint
selection.selectionTimeoutMillis
(long initialSelectionTimeoutMillis, long selectionTimeoutMillis) Sets the timeouts to wait until a successfulEndpoint
selection.useGet
(boolean useGet) Sets whether to use HTTPGET
method instead ofHEAD
when sending a health check request.withClientOptions
(Function<? super ClientOptionsBuilder, ClientOptionsBuilder> configurator) Methods inherited from class com.linecorp.armeria.client.endpoint.healthcheck.AbstractHealthCheckedEndpointGroupBuilder
build
Methods inherited from class com.linecorp.armeria.client.endpoint.AbstractDynamicEndpointGroupBuilder
selectionTimeoutMillis, shouldAllowEmptyEndpoints
-
Method Details
-
useGet
Sets whether to use HTTPGET
method instead ofHEAD
when sending a health check request. By default,HEAD
method is used. This can be useful when the health check requests are failing due to a bad request or an authorization failure and you want to learn why. -
clientFactory
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets theClientFactory
to use when making health check requests. This should generally be the same as theClientFactory
used when creating aClient
stub using theEndpointGroup
.- Overrides:
clientFactory
in classAbstractHealthCheckedEndpointGroupBuilder
-
protocol
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets theSessionProtocol
to be used when making health check requests.- Overrides:
protocol
in classAbstractHealthCheckedEndpointGroupBuilder
-
port
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the port where a health check request will be sent instead of the original port number specified byEndpointGroup
'sEndpoint
s. This property is useful when your server listens to health check requests on a different port.- Overrides:
port
in classAbstractHealthCheckedEndpointGroupBuilder
-
retryInterval
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the interval between health check requests. Must be positive.- Overrides:
retryInterval
in classAbstractHealthCheckedEndpointGroupBuilder
-
retryIntervalMillis
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the interval between health check requests in milliseconds. Must be positive.- Overrides:
retryIntervalMillis
in classAbstractHealthCheckedEndpointGroupBuilder
-
retryBackoff
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the backoff between health check requests.- Overrides:
retryBackoff
in classAbstractHealthCheckedEndpointGroupBuilder
-
clientOptions
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets theClientOptions
of theClient
that sends health check requests. This method can be useful if you already have an Armeria client and want to reuse its configuration, such as using the same decorators.WebClient myClient = ...; // Use the same settings and decorators with `myClient` when sending health check requests. builder.clientOptions(myClient.options());
- Overrides:
clientOptions
in classAbstractHealthCheckedEndpointGroupBuilder
-
withClientOptions
public HealthCheckedEndpointGroupBuilder withClientOptions(Function<? super ClientOptionsBuilder, ClientOptionsBuilder> configurator) Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets theFunction
that customizes aClient
that sends health check requests.builder.withClientOptions(b -> { return b.setHeader(HttpHeaders.AUTHORIZATION, "bearer my-access-token") .responseTimeout(Duration.ofSeconds(3)); });
- Overrides:
withClientOptions
in classAbstractHealthCheckedEndpointGroupBuilder
-
newCheckerFactory
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Returns theFunction
that starts to send health check requests to theEndpoint
specified in a givenHealthCheckerContext
when invoked. TheFunction
must update the health of theEndpoint
with a value between [0, 1] viaHealthCheckerContext.updateHealth(double, ClientRequestContext, ResponseHeaders, Throwable)
.HealthCheckedEndpointGroup
will callAsyncCloseable.closeAsync()
on theAsyncCloseable
returned by theFunction
when it needs to stop sending health check requests.- Specified by:
newCheckerFactory
in classAbstractHealthCheckedEndpointGroupBuilder
-
maxEndpointRatio
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the maximum endpoint ratio of target selected candidates.- Overrides:
maxEndpointRatio
in classAbstractHealthCheckedEndpointGroupBuilder
-
maxEndpointCount
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the maximum endpoint count of target selected candidates.- Overrides:
maxEndpointCount
in classAbstractHealthCheckedEndpointGroupBuilder
-
auth
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets theAuthToken
header usingHttpHeaderNames.AUTHORIZATION
.- Overrides:
auth
in classAbstractHealthCheckedEndpointGroupBuilder
-
allowEmptyEndpoints
Description copied from interface:DynamicEndpointGroupSetters
- Specified by:
allowEmptyEndpoints
in interfaceDynamicEndpointGroupSetters
- Overrides:
allowEmptyEndpoints
in classAbstractHealthCheckedEndpointGroupBuilder
-
selectionTimeout
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the timeout to wait until a successfulEndpoint
selection. This method is shortcut forselectionTimeout(selectionTimeout, selectionTimeout)
.Duration.ZERO
disables the timeout. If unspecified,Flags.defaultResponseTimeoutMillis()
is used to wait for the initial endpoints, andFlags.defaultConnectTimeoutMillis()
} is used after the initial endpoints are resolved by default.Note that the specified
selectionTimeout
and the delegate's selectionTimeout are added and set to thisHealthCheckedEndpointGroup
. For example:DnsAddressEndpointGroup delegate = DnsAddressEndpointGroup.builder("armeria.dev") .selectionTimeout(Duration.ofSeconds(3)) ... .build(); HealthCheckedEndpointGroup endpointGroup = HealthCheckedEndpointGroup.builder(delegate, "/health") // Sets the same timeout to both initialSelectionTimeout // and selectionTimeout .selectionTimeout(Duration.ofSeconds(10)) ... .build(); // The selection timeout of `delegate` is added into `endpointGroup`. assert endpointGroup.selectionTimeoutMillis() == 13000; // 10000 (health) + 3000 (dns) endpointGroup.whenReady.join(); // The selection timeout won't be changed even after the endpoint initialization. assert endpointGroup.selectionTimeoutMillis() == 13000; // 10000 (health) + 3000 (dns)
- Specified by:
selectionTimeout
in interfaceDynamicEndpointGroupSetters
- Overrides:
selectionTimeout
in classAbstractHealthCheckedEndpointGroupBuilder
-
selectionTimeout
public HealthCheckedEndpointGroupBuilder selectionTimeout(Duration initialSelectionTimeout, Duration selectionTimeout) Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the timeouts to wait until a successfulEndpoint
selection.Duration.ZERO
disables the timeout.The final timeout is calculated by adding the
HealthCheckedEndpointGroup.selectionTimeoutMillis()
and the selection timeout of the delegate specified when creating this builder. For example:DnsAddressEndpointGroup delegate = DnsAddressEndpointGroup.builder("armeria.dev") .selectionTimeout(Duration.ofSeconds(3)) ... .build(); HealthCheckedEndpointGroup endpointGroup = HealthCheckedEndpointGroup.builder(delegate, "/health") .selectionTimeout(Duration.ofSeconds(10), Duration.ofSeconds(5)) ... .build(); assert endpointGroup.selectionTimeoutMillis() == 13000; // 10000 (health) + 3000 (dns) // Wait for the initial endpoints. endpointGroup.whenReady().join(); assert endpointGroup.selectionTimeoutMillis() == 8000; // 5000 (health) + 3000 (dns)
- Overrides:
selectionTimeout
in classAbstractHealthCheckedEndpointGroupBuilder
- Parameters:
initialSelectionTimeout
- the initial selection timeout to wait for the initial endpoints. If unspecified,Flags.defaultResponseTimeoutMillis()
is used by default.selectionTimeout
- the selection timeout to wait for anEndpoint
after the initial endpoints are resolved. If unspecified,Flags.defaultConnectTimeoutMillis()
} is used by default.
-
selectionTimeoutMillis
Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the timeout to wait until a successfulEndpoint
selection. This method is shortcut forselectionTimeoutMillis(selectionTimeout, selectionTimeout)
.Duration.ZERO
disables the timeout. If unspecified,Flags.defaultResponseTimeoutMillis()
is used to wait for the initial endpoints, andFlags.defaultConnectTimeoutMillis()
} is used after the initial endpoints are resolved by default.Note that the specified
selectionTimeoutMillis
and the delegate's selectionTimeoutMillis are added and set to thisHealthCheckedEndpointGroup
. For example:DnsAddressEndpointGroup delegate = DnsAddressEndpointGroup.builder("armeria.dev") .selectionTimeoutMillis(3000) ... .build(); HealthCheckedEndpointGroup endpointGroup = HealthCheckedEndpointGroup.builder(delegate, "/health") // Sets the same timeout to both initialSelectionTimeoutMills // and selectionTimeoutMillis .selectionTimeoutMillis(10000) ... .build(); // The selection timeout of `delegate` is added into `endpointGroup`. assert endpointGroup.selectionTimeoutMillis() == 13000; // 10000 (health) + 3000 (dns) endpointGroup.whenReady.join(); // The selection timeout won't be changed even after the endpoint initialization. assert endpointGroup.selectionTimeoutMillis() == 13000; // 10000 (health) + 3000 (dns)
- Specified by:
selectionTimeoutMillis
in interfaceDynamicEndpointGroupSetters
- Overrides:
selectionTimeoutMillis
in classAbstractHealthCheckedEndpointGroupBuilder
-
selectionTimeoutMillis
public HealthCheckedEndpointGroupBuilder selectionTimeoutMillis(long initialSelectionTimeoutMillis, long selectionTimeoutMillis) Description copied from class:AbstractHealthCheckedEndpointGroupBuilder
Sets the timeouts to wait until a successfulEndpoint
selection.0
disables the timeout.The final timeout is calculated by adding the
HealthCheckedEndpointGroup.selectionTimeoutMillis()
and the selection timeout of the delegate specified when creating this builder. For example:DnsAddressEndpointGroup delegate = DnsAddressEndpointGroup.builder("armeria.dev") .selectionTimeoutMillis(3000) ... .build(); HealthCheckedEndpointGroup endpointGroup = HealthCheckedEndpointGroup.builder(delegate, "/health") .selectionTimeoutMillis(10000, 5000) ... .build(); assert endpointGroup.selectionTimeoutMillis() == 13000; // 10000 (health) + 3000 (dns) // Wait for the initial endpoints. endpointGroup.whenReady().join(); assert endpointGroup.selectionTimeoutMillis() == 8000; // 5000 (health) + 3000 (dns)
- Overrides:
selectionTimeoutMillis
in classAbstractHealthCheckedEndpointGroupBuilder
- Parameters:
initialSelectionTimeoutMillis
- the initial selection timeout to wait for the initial endpoints. If unspecified,Flags.defaultResponseTimeoutMillis()
is used by default.selectionTimeoutMillis
- the selection timeout to wait for anEndpoint
after the initial endpoints are resolved. If unspecified,Flags.defaultConnectTimeoutMillis()
} is used by default.
-