resilience4j - Resilience4j is a fault tolerance library designed for Java8 and functional programming

  •        140

Resilience4j is a lightweight fault tolerance library inspired by Netflix Hystrix, but designed for Java 8 and functional programming. Lightweight, because the library only uses Vavr (formerly Javaslang), which does not have any other external library dependencies. Netflix Hystrix, in contrast, has a compile dependency to Archaius which has many more external library dependencies such as Guava and Apache Commons Configuration. With Resilience4j you don’t have to go all-in, you can pick what you need. Setup and usage is described in our User Guide.



Related Projects

Polly - Polly is a

  •    CSharp

Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner.Polly targets .NET 4.0, .NET 4.5 and .NET Standard 1.1 (coverage: .NET Core, Mono, Xamarin.iOS, Xamarin.Android, UWP, WP8.1+).

Java Monitoring Client Library - A java idiomatic monitoring client for collecting metrics

  •    Java

This library provides an API that is powerful and java idiomatic for configuring and publishing application metrics. A reference implementation using Stackdriver Monitoring API v3 is included, but other monitoring backend implementations can also be used. Most of other monitoring libraries available are low-level and are tied directly to the backend. This library provides type safety, retry logic and an backend-agnostic approach to Java metrics instrumentation.

tenacity - Retrying library for Python

  •    Python

Tenacity is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just about anything. It originates from a fork of retrying. The simplest use case is retrying a flaky function whenever an Exception occurs until a value is returned.

rspec-retry - retry randomly failing rspec example

  •    Ruby

RSpec::Retry adds a :retry option for intermittently failing rspec examples. If an example has the :retry option, rspec will retry the example the specified number of times until the example succeeds. You can call ex.run_with_retry(opts) on an individual example.

guava-retrying - This is a small extension to Google's Guava library to allow for the creation of configurable retrying strategies for an arbitrary function call, such as something that talks to a remote service with flaky uptime

  •    Java

##What is this? The guava-retrying module provides a general purpose method for retrying arbitrary Java code with specific stop, retry, and exception handling capabilities that are enhanced by Guava's predicate matching. This is a fork of the excellent RetryerBuilder code posted here by Jean-Baptiste Nizet (JB). I've added a Gradle build for pushing it up to my little corner of Maven Central so that others can easily pull it into their existing projects with minimal effort. It also includes exponential and Fibonacci backoff WaitStrategies that might be useful for situations where more well-behaved service polling is preferred.

bottleneck - Task scheduler and rate limiter

  •    Javascript

Bottleneck is a lightweight and efficient Task Scheduler and Rate Limiter for Node.js and the browser. When dealing with services with limited resources, it's important to ensure that they don't become overloaded.Bottleneck is an easy solution as it does not add much complexity to your code.

node-rate-limiter - A generic rate limiter for node

  •    Javascript

Provides a generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled. Two classes are exposed, RateLimiter and TokenBucket. TokenBucket provides a lower level interface to rate limiting with a configurable burst rate and drip rate. RateLimiter sits on top of the token bucket and adds a restriction on the maximum number of tokens that can be removed each interval to comply with common API restrictions like "150 requests per hour maximum". A synchronous method, tryRemoveTokens(), is available in both RateLimiter and TokenBucket. This will return immediately with a boolean value indicating if the token removal was successful.

retry - A tiny library for retrying failing operations.

  •    PHP

A tiny library for retrying failing operations. Since the network is reliable, things should always work. Am I right? For those cases when they don't, there is retry.


  •    Java

Spring Retry provides an abstraction around retrying failed operations, with an emphasis on declarative control of the process and policy-based bahaviour that is easy to extend and customize. For instance, you can configure a plain POJO operation to retry if it fails, based on the type of exception, and with a fixed or exponential backoff.

resque-retry - A resque plugin; provides retry, delay and exponential backoff support for resque jobs

  •    Ruby

A Resque plugin. Requires Resque ~> 1.25 & resque-scheduler ~> 4.0. This gem provides retry, delay and exponential backoff support for resque jobs.

node-retry - Abstraction for exponential and custom retry strategies for failed operations.

  •    Javascript

Abstraction for exponential and custom retry strategies for failed operations. This module has been tested and is ready to be used.

golimit - Golimit is Uber ringpop based distributed and decentralized rate limiter

  •    Go

Golimit is Uber ringpop based distributed and decentralized rate limiter. It is horizontally scalable and is based on shared nothing architecture. Every node in system is capable of handling read and writes of counters. It is designed to offer sub milliseconds latency to caller application. Recommended deployment topology is sidecar model. Every golimit node keeps local and global counter for api counter and local value is synchronized with other nodes on configurable periodic interval or at defined threshold. Http server provides http interface to increment counter against any arbitrary Key string. It also exposes admin api to manage global configurations.

node-ratelimiter - Abstract rate limiter for nodejs

  •    Javascript

Rate limiter for Node.js backed by Redis.v3.0.2 - #33 by @promag - Use sorted set to limit with moving window.

flask-limiter - rate limiting extension for flask applications

  •    Python

Flask-Limiter provides rate limiting features to flask routes. It has support for a configurable backend for storage with current implementations for in-memory, redis and memcache. Add the rate limiter to your flask app. The following example uses the default in memory implementation for storage.

SQL Fault Retry Provider


The Fault Retry sample demonstrates recommended practices for creating high availability database applications using SQL Server mirroring technology in the back end.

async-retry - Retrying made simple, easy and async

  •    Javascript

Retrying made simple, easy and async

retry - A simple, stateless, functional mechanism to perform actions repetitively until successful.

  •    Go

A simple, stateless, functional mechanism to perform actions repetitively until successful. This project is currently in "pre-release". While the code is heavily tested, the API may change. Vendor (commit or lock) this dependency if you plan on using it.

axios-retry - Axios plugin that intercepts failed requests and retries them whenever possible

  •    Javascript

Axios plugin that intercepts failed requests and retries them whenever possible. Note: Unless shouldResetTimeout is set, the plugin interprets the request timeout as a global value, so it is not used for each retry but for the whole request lifecycle.