Class CircuitBreakerClient
- All Implemented Interfaces:
Client<HttpRequest,,HttpResponse> HttpClient,Unwrappable
HttpClient decorator that handles failures of HTTP requests based on circuit breaker pattern.-
Method Summary
Modifier and TypeMethodDescriptionstatic CircuitBreakerClientBuilderbuilder(CircuitBreakerRule rule) Returns a newCircuitBreakerClientBuilderwith the specifiedCircuitBreakerRule.static CircuitBreakerClientBuilderbuilder(CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Returns a newCircuitBreakerClientBuilderwith the specifiedCircuitBreakerRuleWithContent.static CircuitBreakerClientBuilderbuilder(CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent, int maxContentLength) Returns a newCircuitBreakerClientBuilderwith the specifiedCircuitBreakerRuleWithContentand the specifiedmaxContentLengthwhich is required to determine aResponseas a success or failure.protected HttpResponsedoExecute(ClientRequestContext ctx, HttpRequest req, CircuitBreakerCallback callback) Invoked when theCircuitBreakeris in closed state.static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerClientHandler handler, CircuitBreakerRule rule) Creates a new decorator with the specifiedCircuitBreakerClientHandlerandCircuitBreakerRule.static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerClientHandler handler, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator with the specifiedCircuitBreakerClientHandlerandCircuitBreakerRuleWithContent.static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerMapping mapping, CircuitBreakerRule rule) Creates a new decorator with the specifiedCircuitBreakerMappingandCircuitBreakerRule.static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerMapping mapping, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator with the specifiedCircuitBreakerMappingandCircuitBreakerRuleWithContent.static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreaker circuitBreaker, CircuitBreakerRule rule) Creates a new decorator using the specifiedCircuitBreakerinstance andCircuitBreakerRule.static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreaker circuitBreaker, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator using the specifiedCircuitBreakerinstance andCircuitBreakerRuleWithContent.static Function<? super HttpClient,CircuitBreakerClient> newPerHostAndMethodDecorator(BiFunction<String, String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Deprecated.static Function<? super HttpClient,CircuitBreakerClient> newPerHostAndMethodDecorator(BiFunction<String, String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) static Function<? super HttpClient,CircuitBreakerClient> newPerHostDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Creates a new decorator that binds oneCircuitBreakerper host with the specifiedCircuitBreakerRule.static Function<? super HttpClient,CircuitBreakerClient> newPerHostDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator that binds oneCircuitBreakerper host with the specifiedCircuitBreakerRuleWithContent.static Function<? super HttpClient,CircuitBreakerClient> newPerMethodDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Creates a new decorator that binds oneCircuitBreakerperHttpMethodwith the specifiedCircuitBreakerRule.static Function<? super HttpClient,CircuitBreakerClient> newPerMethodDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator that binds oneCircuitBreakerperHttpMethodwith the specifiedCircuitBreakerRuleWithContent.static Function<? super HttpClient,CircuitBreakerClient> newPerPathDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Creates a new decorator that binds oneCircuitBreakerper request path with the specifiedCircuitBreakerRule.static Function<? super HttpClient,CircuitBreakerClient> newPerPathDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator that binds oneCircuitBreakerper request path with the specifiedCircuitBreakerRuleWithContent.Methods inherited from class com.linecorp.armeria.client.circuitbreaker.AbstractCircuitBreakerClient
execute, toStringMethods inherited from class com.linecorp.armeria.common.util.AbstractUnwrappable
as, unwrap, unwrapAllMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.linecorp.armeria.client.HttpClient
executeMethods inherited from interface com.linecorp.armeria.common.util.Unwrappable
equalsIgnoreWrapper, unwrapAll
-
Method Details
-
newDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreaker circuitBreaker, CircuitBreakerRule rule) Creates a new decorator using the specifiedCircuitBreakerinstance andCircuitBreakerRule.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services. -
newDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreaker circuitBreaker, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator using the specifiedCircuitBreakerinstance andCircuitBreakerRuleWithContent.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services. -
newDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerMapping mapping, CircuitBreakerRule rule) Creates a new decorator with the specifiedCircuitBreakerMappingandCircuitBreakerRule.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services. -
newDecorator
@UnstableApi public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerClientHandler handler, CircuitBreakerRule rule) Creates a new decorator with the specifiedCircuitBreakerClientHandlerandCircuitBreakerRule. -
newDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerMapping mapping, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator with the specifiedCircuitBreakerMappingandCircuitBreakerRuleWithContent.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services. -
newDecorator
@UnstableApi public static Function<? super HttpClient,CircuitBreakerClient> newDecorator(CircuitBreakerClientHandler handler, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator with the specifiedCircuitBreakerClientHandlerandCircuitBreakerRuleWithContent. -
newPerMethodDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerMethodDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Creates a new decorator that binds oneCircuitBreakerperHttpMethodwith the specifiedCircuitBreakerRule.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services.- Parameters:
factory- a function that takes anHttpMethodand creates a newCircuitBreaker.
-
newPerMethodDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerMethodDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator that binds oneCircuitBreakerperHttpMethodwith the specifiedCircuitBreakerRuleWithContent.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services.- Parameters:
factory- a function that takes anHttpMethodand creates a newCircuitBreaker.
-
newPerHostDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerHostDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Creates a new decorator that binds oneCircuitBreakerper host with the specifiedCircuitBreakerRule.Since
CircuitBreakeris 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.
-
newPerHostDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerHostDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator that binds oneCircuitBreakerper host with the specifiedCircuitBreakerRuleWithContent.Since
CircuitBreakeris 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.
-
newPerPathDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerPathDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Creates a new decorator that binds oneCircuitBreakerper request path with the specifiedCircuitBreakerRule.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services.- Parameters:
factory- a function that takes a request path and creates a newCircuitBreaker.
-
newPerPathDecorator
public static Function<? super HttpClient,CircuitBreakerClient> newPerPathDecorator(Function<String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Creates a new decorator that binds oneCircuitBreakerper request path with the specifiedCircuitBreakerRuleWithContent.Since
CircuitBreakeris a unit of failure detection, don't reuse the same instance for unrelated services.- Parameters:
factory- a function that takes a request path and creates a newCircuitBreaker.
-
newPerHostAndMethodDecorator
@Deprecated public static Function<? super HttpClient,CircuitBreakerClient> newPerHostAndMethodDecorator(BiFunction<String, String, ? extends CircuitBreaker> factory, CircuitBreakerRule rule) Deprecated.Creates a new decorator that binds oneCircuitBreakerper host andHttpMethodwith the specifiedCircuitBreakerRule.Since
CircuitBreakeris 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.
-
newPerHostAndMethodDecorator
@Deprecated public static Function<? super HttpClient,CircuitBreakerClient> newPerHostAndMethodDecorator(BiFunction<String, String, ? extends CircuitBreaker> factory, CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Deprecated.Creates a new decorator that binds oneCircuitBreakerper host andHttpMethodwith the specifiedCircuitBreakerRuleWithContent.Since
CircuitBreakeris 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 newCircuitBreakerClientBuilderwith the specifiedCircuitBreakerRule. -
builder
public static CircuitBreakerClientBuilder builder(CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent) Returns a newCircuitBreakerClientBuilderwith the specifiedCircuitBreakerRuleWithContent. -
builder
public static CircuitBreakerClientBuilder builder(CircuitBreakerRuleWithContent<HttpResponse> ruleWithContent, int maxContentLength) Returns a newCircuitBreakerClientBuilderwith the specifiedCircuitBreakerRuleWithContentand the specifiedmaxContentLengthwhich is required to determine aResponseas a success or failure.- Throws:
IllegalArgumentException- if the specifiedmaxContentLengthis equal to or less than0
-
doExecute
protected HttpResponse doExecute(ClientRequestContext ctx, HttpRequest req, CircuitBreakerCallback callback) throws Exception Description copied from class:AbstractCircuitBreakerClientInvoked when theCircuitBreakeris in closed state.- Specified by:
doExecutein classAbstractCircuitBreakerClient<HttpRequest,HttpResponse> - Throws:
Exception
-
newDecorator(CircuitBreakerMapping, CircuitBreakerRule)withCircuitBreakerMapping.perHostAndMethod(BiFunction).