Class Resilience4JCircuitBreakerClientHandler

java.lang.Object
com.linecorp.armeria.resilience4j.circuitbreaker.client.Resilience4JCircuitBreakerClientHandler
All Implemented Interfaces:
com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler

@UnstableApi public final class Resilience4JCircuitBreakerClientHandler extends Object implements com.linecorp.armeria.client.circuitbreaker.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 Type
    Method
    Description
    boolean
     
    static com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler
    of()
    Creates a default CircuitBreakerClientHandler which uses Resilience4jCircuitBreakerMapping.of() to handle requests.
    static com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler
    Creates a default CircuitBreakerClientHandler which uses the provided CircuitBreakerMapping to handle requests.
    static com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler
    of(io.github.resilience4j.circuitbreaker.CircuitBreaker circuitBreaker)
    Creates a default CircuitBreakerClientHandler which uses the provided CircuitBreaker to handle requests.
    com.linecorp.armeria.common.circuitbreaker.CircuitBreakerCallback
    tryRequest(com.linecorp.armeria.client.ClientRequestContext ctx, com.linecorp.armeria.common.Request req)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • of

      public static com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler of()
      Creates a default CircuitBreakerClientHandler which uses Resilience4jCircuitBreakerMapping.of() to handle requests.
    • of

      public static com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler of(io.github.resilience4j.circuitbreaker.CircuitBreaker circuitBreaker)
      Creates a default CircuitBreakerClientHandler which uses the provided CircuitBreaker to handle requests.
    • of

      public static com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler of(Resilience4jCircuitBreakerMapping mapping)
      Creates a default CircuitBreakerClientHandler which uses the provided CircuitBreakerMapping to handle requests.
    • tryRequest

      public com.linecorp.armeria.common.circuitbreaker.CircuitBreakerCallback tryRequest(com.linecorp.armeria.client.ClientRequestContext ctx, com.linecorp.armeria.common.Request req)
      Specified by:
      tryRequest in interface com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler
    • isCircuitBreakerException

      public boolean isCircuitBreakerException(Exception ex)
      Specified by:
      isCircuitBreakerException in interface com.linecorp.armeria.client.circuitbreaker.CircuitBreakerClientHandler