Class CircuitBreakerClient
java.lang.Object
com.linecorp.armeria.common.util.AbstractUnwrappable<Client<T_I,T_O>>
com.linecorp.armeria.client.DecoratingClient<I,O,I,O>
com.linecorp.armeria.client.SimpleDecoratingClient<I,O>
com.linecorp.armeria.client.circuitbreaker.AbstractCircuitBreakerClient<HttpRequest,HttpResponse>
com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClient
- All Implemented Interfaces:
Client<HttpRequest,HttpResponse>
,HttpClient
,Unwrappable
public class CircuitBreakerClient extends AbstractCircuitBreakerClient<HttpRequest,HttpResponse> implements HttpClient
An
HttpClient
decorator that handles failures of HTTP requests based on circuit breaker pattern.-
Method Summary
Methods inherited from class com.linecorp.armeria.client.circuitbreaker.AbstractCircuitBreakerClient
execute, reportSuccessOrFailure, strategy, strategyWithContent
Methods inherited from class com.linecorp.armeria.common.util.AbstractUnwrappable
as, delegate, toString
-
Method Details
-
newDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreaker circuitBreaker, CircuitBreakerStrategy strategy)Creates a new decorator using the specifiedCircuitBreaker
instance andCircuitBreakerStrategy
.Since
CircuitBreaker
is a unit of failure detection, don't reuse the same instance for unrelated services. -
newDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerMapping mapping, CircuitBreakerStrategy strategy)Creates a new decorator with the specifiedCircuitBreakerMapping
andCircuitBreakerStrategy
.Since
CircuitBreaker
is a unit of failure detection, don't reuse the same instance for unrelated services. -
newPerMethodDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerMethodDecorator(Function<String,CircuitBreaker> factory, CircuitBreakerStrategy strategy)Creates a new decorator that binds oneCircuitBreaker
perHttpMethod
with the specifiedCircuitBreakerStrategy
.Since
CircuitBreaker
is a unit of failure detection, don't reuse the same instance for unrelated services.- Parameters:
factory
- a function that takes anHttpMethod
and creates a newCircuitBreaker
-
newPerHostDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerHostDecorator(Function<String,CircuitBreaker> factory, CircuitBreakerStrategy strategy)Creates a new decorator that binds oneCircuitBreaker
per host with the specifiedCircuitBreakerStrategy
.Since
CircuitBreaker
is a unit of failure detection, don't reuse the same instance for unrelated services.- Parameters:
factory
- a function that takes a host name and creates a newCircuitBreaker
-
newPerHostAndMethodDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerHostAndMethodDecorator(Function<String,CircuitBreaker> factory, CircuitBreakerStrategy strategy)Creates a new decorator that binds oneCircuitBreaker
per host andHttpMethod
with the specifiedCircuitBreakerStrategy
.Since
CircuitBreaker
is a unit of failure detection, don't reuse the same instance for unrelated services.- Parameters:
factory
- a function that takes a host+method and creates a newCircuitBreaker
-
builder
Returns a newCircuitBreakerClientBuilder
with the specifiedCircuitBreakerStrategy
. -
builder
public static CircuitBreakerClientBuilder builder(CircuitBreakerStrategyWithContent<HttpResponse> strategyWithContent)Returns a newCircuitBreakerClientBuilder
with the specifiedCircuitBreakerStrategyWithContent
. -
doExecute
protected HttpResponse doExecute(ClientRequestContext ctx, HttpRequest req, CircuitBreaker circuitBreaker) throws ExceptionDescription copied from class:AbstractCircuitBreakerClient
Invoked when theCircuitBreaker
is in closed state.- Specified by:
doExecute
in classAbstractCircuitBreakerClient<HttpRequest,HttpResponse>
- Throws:
Exception
-