- 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
Modifier and TypeInterfaceDescriptionstatic enum
A circuit breaker can be in any of 3 possible states as defined by this enum. -
Method Summary
Modifier and TypeMethodDescriptionstatic CircuitBreakerConfig.Builder
builder()
A new circuit breaker fluent API builder.static CircuitBreaker
create
(CircuitBreakerConfig config) Create a new circuit builder based on its configuration.static CircuitBreaker
create
(Consumer<CircuitBreakerConfig.Builder> builderConsumer) Create a new circuit breaker with a possibility to customize its configuration.state()
Current breaker state.void
state
(CircuitBreaker.State newState) Set state of this circuit breaker.Methods inherited from interface io.helidon.builder.api.RuntimeType.Api
prototype
-
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
-