Comments (4)
That's an interesting scenario. Basically, we would need to modify the arguments passed to JavaMailSenderImpl.send
(or whatever) for each retry based on the contents of MailSendException
. There's currently no way to do this with Recurrent since Recurrent just re-runs a Callable
or Runnable
. It could be possible to swap in a new Callable
or Runnable
, but modifying the actual arguments would require a different approach, more along the lines of another library, Sarge, which captures (and could potentially manipulate) invocation arguments passed to a proxy.
What I'd like to do instead is support this sort of use case via Recurrent's retry tracking, where you can manually perform retries within a loop but still use Recurrent to manage the policy and track retries for you. Ex:
Collection<Object> messages = ....
RetryStats stats = new RetryStats(retryPolicy);
while (stats.canRetry() && !messages.isEmpty()) {
try {
mailSender.send(messages);
} catch (MailSendException e) {
messages = e.getFailedMessages().values();
}
}
This sort of thing isn't possible right now, but I could add it easily and wanted to give you an idea of what I'm thinking. Thoughts?
from failsafe.
I am able to achieve this through nurkiewicz async retry framework https://github.com/nurkiewicz/async-retry as you get the last Throwable inside a context object provided to you in the block of code retrying. I haven't tested this yet though.
from failsafe.
What does the approach look like with async-retry? What do you think of the suggested API?
from failsafe.
I just pushed an approach for this. https://github.com/jhalterman/recurrent#invocation-tracking
The Invocation also makes the last failure available.
from failsafe.
Related Issues (20)
- Why does CheckedPredicate exist? HOT 2
- Also add note about default maxRetries of 3 to maxDuration section of the documentation HOT 7
- Bulkhead policy may drop requests when maxWaitTime is specified HOT 8
- Guidance around CheckedPredicate HOT 2
- Time based error limiter policy
- [Question]Can withBackoff and withDelay be used at the same time? HOT 2
- RetryPolicy handleIf not working with DynamoDbException in predicate HOT 4
- Having a context object in the run(...) and get(...) methods HOT 7
- dev.failsafe.Functions.* do not propagate toString to the wrapped object
- [Question] Is it possible to have multiple Fallback policies in one Failsafe executor? HOT 4
- [question] how to use failsafe with kotlin
- Feature Request: Integrate / add support for Lunar Proxy (backend policy) HOT 1
- Why recommend CircuitBreaker before Retry? HOT 1
- CircuitBreaker stays in OPEN even after DELAY time HOT 1
- Nested retries, how to prevent duplicate retrying? HOT 5
- FailsafeExecutor.compose and .with(Executor) have surprising composition behavior
- Provide BOM with all failsafe artifacts for better dependency management
- Failsafe okhttp integration causes issues with BearerAuth and outdated tokens
- CircuitBreakerBuilder withSuccessThreshold documentation whoopsy HOT 1
- [Question] Is it possible to override the "maxRetries" and "delay" of retry policy at runtime? HOT 2
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 failsafe.