Examples
Examples of resilience4j-rxjava2
Decorate Flowable with a CircuitBreaker
The following example shows how to decorate an Observable by using the custom RxJava operator. All other reactive types like Observable, Flowable, Single, Maybe and Completable are also supported.
The CircuitBreakerOperator
checks if a downstream subscriber/observer can acquire a permission to subscribe to an upstream Publisher. If the CircuitBreaker is OPEN, the CircuitBreakerOperator emits a CallNotPermittedException
to the downstream subscriber.
CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("name");
Flowable.fromCallable(backendService::doSomething)
.compose(CircuitBreakerOperator.of(circuitBreaker))
Decorate Flowable with a RateLimiter
The following example shows how to decorate a Flowable by using the custom RxJava2 operator.
All other reactive types like Flowable, Single, Maybe and Completable are also supported.
The RateLimiterOperator
checks if a downstream subscriber/observer can acquire a permission to subscribe to an upstream Publisher. If the rate limit is exceeded, the RateLimiterOperator emits a RequestNotPermitted
to the downstream subscriber.
RateLimiter rateLimiter = RateLimiter.ofDefaults("name");
Flowable.fromCallable(backendService::doSomething)
.compose(RateLimiterOperator.of(rateLimiter))
Decorate Flowable with a Bulkhead
The following example shows how to decorate a Flowable by using the custom RxJava2 operator.
All other reactive types like Flowable, Single, Maybe and Completable are also supported.
The BulkheadOperator
checks if a downstream subscriber/observer can acquire a permission to subscribe to an upstream Publisher. If the Bulhead is full, the BulkheadOperator emits a BulkheadFullException
to the downstream subscriber.
Bulkhead bulkhead = Bulkhead.ofDefaults("name");
Flowable.fromCallable(backendService::doSomething)
.compose(BulkheadOperator.of(bulkhead));
Decorate Flowable with Retry
Retry retry = Retry.ofDefaults("backendName");
Flowable.fromCallable(backendService::doSomething)
.compose(RetryOperator.of(retry))
Updated over 5 years ago