Class CircuitBreaker
- java.lang.Object
-
- io.vertx.reactivex.circuitbreaker.CircuitBreaker
-
-
Field Summary
Fields Modifier and Type Field Description static TypeArg<CircuitBreaker>
__TYPE_ARG
-
Constructor Summary
Constructors Constructor Description CircuitBreaker(CircuitBreaker delegate)
CircuitBreaker(Object delegate)
-
Method Summary
-
-
-
Field Detail
-
__TYPE_ARG
public static final TypeArg<CircuitBreaker> __TYPE_ARG
-
-
Constructor Detail
-
CircuitBreaker
public CircuitBreaker(CircuitBreaker delegate)
-
CircuitBreaker
public CircuitBreaker(Object delegate)
-
-
Method Detail
-
getDelegate
public CircuitBreaker getDelegate()
-
create
public static CircuitBreaker create(String name, Vertx vertx, CircuitBreakerOptions options)
Creates a new instance ofCircuitBreaker
.- Parameters:
name
- the namevertx
- the Vert.x instanceoptions
- the configuration option- Returns:
- the created instance
-
create
public static CircuitBreaker create(String name, Vertx vertx)
Creates a new instance ofCircuitBreaker
, with default options.- Parameters:
name
- the namevertx
- the Vert.x instance- Returns:
- the created instance
-
close
public CircuitBreaker close()
Closes the circuit breaker. It stops sending events on its state on the event bus. This method is not related to theclose
state of the circuit breaker. To set the circuit breaker in theclose
state, usereset()
.- Returns:
-
openHandler
public CircuitBreaker openHandler(Handler<Void> handler)
Sets a invoked when the circuit breaker state switches to open.- Parameters:
handler
- the handler, must not benull
- Returns:
- the current
CircuitBreaker
-
halfOpenHandler
public CircuitBreaker halfOpenHandler(Handler<Void> handler)
Sets a invoked when the circuit breaker state switches to half-open.- Parameters:
handler
- the handler, must not benull
- Returns:
- the current
CircuitBreaker
-
closeHandler
public CircuitBreaker closeHandler(Handler<Void> handler)
Sets a invoked when the circuit breaker state switches to close.- Parameters:
handler
- the handler, must not benull
- Returns:
- the current
CircuitBreaker
-
executeWithFallback
public <T> void executeWithFallback(Handler<Promise<T>> command, Function<Throwable,T> fallback, Handler<AsyncResult<T>> handler)
Same asexecuteWithFallback(io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>, io.vertx.core.Handler<io.vertx.core.AsyncResult<T>>)
but using a callback.- Parameters:
command
- the operationfallback
- the fallbackhandler
- the completion handler receiving either the operation result or the fallback result. The parameter is an because if the fallback is not called, the error is passed to the handler.
-
executeWithFallback
public <T> void executeWithFallback(Handler<Promise<T>> command, Function<Throwable,T> fallback)
Same asexecuteWithFallback(io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>, io.vertx.core.Handler<io.vertx.core.AsyncResult<T>>)
but using a callback.- Parameters:
command
- the operationfallback
- the fallback
-
rxExecuteWithFallback
public <T> io.reactivex.Single<T> rxExecuteWithFallback(Handler<Promise<T>> command, Function<Throwable,T> fallback)
Same asexecuteWithFallback(io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>, io.vertx.core.Handler<io.vertx.core.AsyncResult<T>>)
but using a callback.- Parameters:
command
- the operationfallback
- the fallback- Returns:
-
execute
public <T> void execute(Handler<Promise<T>> command, Handler<AsyncResult<T>> handler)
Same asexecuteWithFallback(io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>, io.vertx.core.Handler<io.vertx.core.AsyncResult<T>>)
but using the circuit breaker default fallback.- Parameters:
command
- the operationhandler
- the completion handler receiving either the operation result or the fallback result. The parameter is an because if the fallback is not called, the error is passed to the handler.
-
execute
public <T> void execute(Handler<Promise<T>> command)
Same asexecuteWithFallback(io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>, io.vertx.core.Handler<io.vertx.core.AsyncResult<T>>)
but using the circuit breaker default fallback.- Parameters:
command
- the operation
-
rxExecute
public <T> io.reactivex.Single<T> rxExecute(Handler<Promise<T>> command)
Same asexecuteWithFallback(io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>, io.vertx.core.Handler<io.vertx.core.AsyncResult<T>>)
but using the circuit breaker default fallback.- Parameters:
command
- the operation- Returns:
-
executeAndReport
public <T> CircuitBreaker executeAndReport(Promise<T> resultPromise, Handler<Promise<T>> command)
Same asexecuteAndReportWithFallback(io.vertx.reactivex.core.Promise<T>, io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>)
but using the circuit breaker default fallback.- Parameters:
resultPromise
- the promise on which the operation result is reportedcommand
- the operation- Returns:
- the current
CircuitBreaker
-
executeAndReportWithFallback
public <T> CircuitBreaker executeAndReportWithFallback(Promise<T> resultPromise, Handler<Promise<T>> command, Function<Throwable,T> fallback)
Executes the given operation with the circuit breaker control. The operation is generally calling an external system. The operation receives a object as parameter and must call when the operation has terminated successfully. The operation must also call in case of failure.The operation is not invoked if the circuit breaker is open, and the given fallback is called immediately. The circuit breaker also monitor the completion of the operation before a configure timeout. The operation is considered as failed if it does not terminate in time.
Unlike
executeWithFallback(io.vertx.core.Handler<io.vertx.reactivex.core.Promise<T>>, java.util.function.Function<java.lang.Throwable, T>, io.vertx.core.Handler<io.vertx.core.AsyncResult<T>>)
, this method does return a object, but let the caller pass a object on which the result is reported. If the fallback is called, the future is successfully completed with the value returned by the fallback function. If the fallback throws an exception, the future is marked as failed.- Parameters:
resultPromise
- the promise on which the operation result is reportedcommand
- the operationfallback
- the fallback function. It gets an exception as parameter and returns the fallback result- Returns:
- the current
CircuitBreaker
-
fallback
public <T> CircuitBreaker fallback(Function<Throwable,T> handler)
Sets a default invoked when the bridge is open to handle the "request", or on failure ifCircuitBreakerOptions
is enabled.The function gets the exception as parameter and returns the fallback result.
- Parameters:
handler
- the handler- Returns:
- the current
CircuitBreaker
-
failurePolicy
public <T> CircuitBreaker failurePolicy(FailurePolicy<T> failurePolicy)
Configures the failure policy for this circuit-breaker.- Parameters:
failurePolicy
-- Returns:
- the current
CircuitBreaker
-
reset
public CircuitBreaker reset()
Resets the circuit breaker state (number of failure set to 0 and state set to closed).- Returns:
- the current
CircuitBreaker
-
open
public CircuitBreaker open()
Explicitly opens the circuit.- Returns:
- the current
CircuitBreaker
-
state
public CircuitBreakerState state()
- Returns:
- the current state.
-
failureCount
public long failureCount()
- Returns:
- the current number of failures.
-
name
public String name()
- Returns:
- the name of the circuit breaker.
-
retryPolicy
@Deprecated public CircuitBreaker retryPolicy(Function<Integer,Long> retryPolicy)
Deprecated.- Parameters:
retryPolicy
-- Returns:
-
retryPolicy
public CircuitBreaker retryPolicy(RetryPolicy retryPolicy)
Set aRetryPolicy
which computes a delay before retry execution.- Parameters:
retryPolicy
-- Returns:
-
newInstance
public static CircuitBreaker newInstance(CircuitBreaker arg)
-
-