Comments (1)
Currently, guava-retrying
enables the customization of several distinct condition-checking interfaces for determining the retrying behavior: StopStrategy
for explicit hard stop conditions, WaitStrategy
for computing how long to wait between retry attempts, various Predicate
evaluations on results and exceptions, and an integration with Guava's TimeLimiter
. The included concrete implementations have been built around constructs that don't require global state or coordination among other bits of code in order to locally manage the retrying behavior for a single repeated function call.
A WaitStrategy
is exposed as a nice little interface to create custom implementations of in your own applications that are built on top of this module. In order to keep this a very small interface footprint, I would not be excited to add chaining directly to the WaitStrategy
in the RetryerBuilder
, such as:
public static final Retryer<Object> COMPOSED_WAITS = RetryerBuilder.newBuilder()
.withWaitStrategy(WaitStrategies.exponentialWait(100, 15, TimeUnit.SECONDS))
.withWaitStrategy(WaitStrategies.fibonacciWait()
.withStopStrategy(StopStrategies.stopAfterAttempt(10))
.build();
I'm not sure that's exactly the route you had in mind, but just in case it was I wanted to save you some time. A more fun implementation might actually be a single join
method in WaitStrategies
where each strategy is combined together in such a way that they each add to the computed sleep value that is returned, such as:
public static WaitStrategy join(WaitStrategy... strategies)
In this way, we maintain the simplicity of the original interfacing while still adding the ability to express many more variants of WaitStrategy
constructs. This is a very nice idea. Thanks for bringing it up and offering to help with it.
from guava-retrying.
Related Issues (20)
- Since this project has not been maintained for a long time, I fork this project and fix the problem
- Feature Request: remove final modifier from com.github.rholder.retry.Retryer
- Failed to collect dependencies at com.github.rholder:guava-retrying:jar:2.0.0 HOT 5
- Any interest in a Future's retryer? HOT 2
- The lib is crashing when used in Ratpack (guava-20.0rc1) HOT 4
- Retryer.call should not catch Errors like OOME
- Could I build the Retryer with different executors? HOT 3
- ./gradlew build on macOS Sierra with JDK 1.8 throwing a Java compile error HOT 3
- is there a way to make it log what it's doing? HOT 3
- Is there a way to do this on something that is not a callable? HOT 5
- artifact has a compile time dependency on jsr305
- RetryerBuilder having protected constructor HOT 2
- Project appears to be dead: it has been forked to rhuffman/re-retrying HOT 1
- Initial wait time in an exponential retry strategy. HOT 3
- When i should use Fibonacci WaitStrategy
- When I run demo , when successNum coming my process can not exit immediately
- WaitStrategies documentation should mention milliseconds
- The problem with 'AttemptTimeLimiters.fixedTimeLimit' HOT 2
- doubts about SimpleTimeLimiter has private Constructor,but FixedAttemptTimeLimit new it?
- Bug: StopStrategies&StopStrategies will throw unformatted message HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from guava-retrying.