Class Resilience4JCircuitBreakerClientHandler
java.lang.Object
com.linecorp.armeria.resilience4j.circuitbreaker.client.Resilience4JCircuitBreakerClientHandler
- All Implemented Interfaces:
CircuitBreakerClientHandler
@UnstableApi
public final class Resilience4JCircuitBreakerClientHandler
extends Object
implements CircuitBreakerClientHandler
A
CircuitBreakerClientHandler
implementation for use with Resilience4j's CircuitBreaker
.
// for HttpRequest
CircuitBreakerRule rule = CircuitBreakerRule.onStatusClass(HttpStatusClass.SERVER_ERROR);
CircuitBreakerRegistry registry = CircuitBreakerRegistry.ofDefaults();
Resilience4jCircuitBreakerMapping mapping =
Resilience4jCircuitBreakerMapping.builder()
.registry(registry)
.perHost()
.build();
WebClient.builder()
.decorator(CircuitBreakerClient.newDecorator(
Resilience4JCircuitBreakerClientHandler.of(mapping), rule))
...
// for RpcRequest
CircuitBreakerRuleWithContent rule = ...;
CircuitBreakerRegistry registry = CircuitBreakerRegistry.ofDefaults();
Resilience4jCircuitBreakerMapping mapping =
Resilience4jCircuitBreakerMapping.builder()
.registry(registry)
.perHost()
.build();
ThriftClients.builder("http://thrift.api.com")
.rpcDecorator(CircuitBreakerRpcClient.newDecorator(
Resilience4JCircuitBreakerClientHandler.of(mapping), rule))
...
-
Method Summary
Modifier and TypeMethodDescriptionstatic CircuitBreakerClientHandler
of()
Creates a defaultCircuitBreakerClientHandler
which usesResilience4jCircuitBreakerMapping.of()
to handle requests.static CircuitBreakerClientHandler
of
(Resilience4jCircuitBreakerMapping mapping) Creates a defaultCircuitBreakerClientHandler
which uses the providedCircuitBreakerMapping
to handle requests.static CircuitBreakerClientHandler
of
(io.github.resilience4j.circuitbreaker.CircuitBreaker circuitBreaker) Creates a defaultCircuitBreakerClientHandler
which uses the providedCircuitBreaker
to handle requests.tryRequest
(ClientRequestContext ctx, Request req) Invoked byCircuitBreakerClient
right before sending a request.
-
Method Details
-
of
Creates a defaultCircuitBreakerClientHandler
which usesResilience4jCircuitBreakerMapping.of()
to handle requests. -
of
public static CircuitBreakerClientHandler of(io.github.resilience4j.circuitbreaker.CircuitBreaker circuitBreaker) Creates a defaultCircuitBreakerClientHandler
which uses the providedCircuitBreaker
to handle requests. -
of
Creates a defaultCircuitBreakerClientHandler
which uses the providedCircuitBreakerMapping
to handle requests. -
tryRequest
Description copied from interface:CircuitBreakerClientHandler
Invoked byCircuitBreakerClient
right before sending a request. In a typical implementation, users may extract the appropriate circuit breaker implementation using the providedClientRequestContext
andRequest
. Afterwards, one of the following can occur:- If the circuit breaker rejects the request, an exception such as
FailFastException
may be thrown. - If the circuit breaker doesn't reject the request, users may choose to return a
CircuitBreakerCallback
. A callback method will be invoked depending on the configuredCircuitBreakerRule
. - One may return
null
to proceed normally as if theCircuitBreakerClient
doesn't exist.
- Specified by:
tryRequest
in interfaceCircuitBreakerClientHandler
- If the circuit breaker rejects the request, an exception such as
-