Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I couldn't find any info about a possibility of action I need. I am using @Retryable annotation with @Recover handler method. Smth like this:
@Retryable(value = {Exception.class}, maxAttempts = 5, backoff = @Backoff(delay = 10000))
public void update(Integer id)
execute(id);
@Recover
public void recover(Exception ex)
logger.error("Error when updating object with id {}", id);
The problem is that I don't know, how to pass my parameter "id" to recover() method. Any ideas? Thanks in advance.
According to the Spring Retry documentation, just align the parameters between the @Retryable
and the @Recover
methods :
The arguments for the recovery method can optionally include the
exception that was thrown, and also optionally the arguments passed to
the orginal retryable method (or a partial list of them as long as
none are omitted). Example:
@Service
class Service {
@Retryable(RemoteAccessException.class)
public void service(String str1, String str2) {
// ... do something
@Recover
public void recover(RemoteAccessException e, String str1, String str2) {
// ... error handling making use of original args if required
So you could write :
@Retryable(value = {Exception.class}, maxAttempts = 5, backoff = @Backoff(delay = 10000))
public void update(Integer id) {
execute(id);
@Recover
public void recover(Exception ex, Integer id){
logger.error("Error when updating object with id {}", id);
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.