Interface CircuitBreaker
- All Superinterfaces:
FtHandler, RuntimeType.Api<CircuitBreakerConfig>
CircuitBreaker protects a potentially failing endpoint from overloading and the application
from spending resources on those endpoints.
In case too many errors are detected, the circuit opens and all new requests fail with a
CircuitBreakerOpenException for a period of time.
After this period, attempts are made to check if the service is up again - if so, the circuit closes
and requests can process as usual again.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enumA circuit breaker can be in any of 3 possible states as defined by this enum. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringCounter for all the calls in a timeout.static final StringCounter for the number of times a circuit breaks has moved fromCircuitBreaker.State.CLOSEDtoCircuitBreaker.State.OPEN. -
Method Summary
Modifier and TypeMethodDescriptionstatic CircuitBreakerConfig.Builderbuilder()A new circuit breaker fluent API builder.static CircuitBreakercreate(CircuitBreakerConfig config) Create a new circuit builder based on its configuration.static CircuitBreakercreate(Consumer<CircuitBreakerConfig.Builder> builderConsumer) Create a new circuit breaker with a possibility to customize its configuration.state()Current breaker state.voidstate(CircuitBreaker.State newState) Set state of this circuit breaker.Methods inherited from interface RuntimeType.Api
prototypeModifier and TypeMethodDescriptionThe prototype as it was received when creating this runtime object instance.
-
Field Details
-
FT_CIRCUITBREAKER_CALLS_TOTAL
-
FT_CIRCUITBREAKER_OPENED_TOTAL
Counter for the number of times a circuit breaks has moved fromCircuitBreaker.State.CLOSEDtoCircuitBreaker.State.OPEN.- See Also:
-
-
Method Details
-
create
Create a new circuit builder based on its configuration.- Parameters:
config- circuit breaker configuration- Returns:
- a new circuit breaker
-
create
Create a new circuit breaker with a possibility to customize its configuration.- Parameters:
builderConsumer- consumer of configuration- Returns:
- a new circuit breaker
-
builder
A new circuit breaker fluent API builder.- Returns:
- a new builder
-
state
CircuitBreaker.State state()Current breaker state. As the state may change within nanoseconds, this is for information only.- Returns:
- current breaker state
-
state
Set state of this circuit breaker. Note that all usual processes to re-close or open the circuit are in progress.- If set to
CircuitBreaker.State.OPEN, a timer will set it to half open in a while - If set to
CircuitBreaker.State.HALF_OPEN, it may close after first successful request - If set to
CircuitBreaker.State.CLOSED, it may open again if requests fail
state()may yield a different state than configured here- Parameters:
newState- state to configure
- If set to
-