为跳羚减肥

在实际工作中,再加工是很常见的场景,比如:

这些错误可能是网络波动造成的,等待后重新处理就成功了。一般来说,使用try/catch,while loop等语法进行再处理,但是这种方法缺乏统一性,也不是很方便,而且需要大量代码。

然而,spring-retry可以优雅地通过注释实现再处理功能,而不会入侵原始的业务逻辑代码。

Spring系列的Spring-Retry是另一个实用模块,它可以帮助我们以标准的方式处理任何特定操作的重试。在spring-retry中,所有的配置都基于简单的注释。

Spring Boot的基础我就不介绍了,推荐这个实用教程:/javastacks/spring-boot-best-practice。

让我们简单解释一下注释中几个参数的含义:

当重试次数用完仍然失败时会发生什么?

当重试次数用完时,RetryOperations可以将控制权传递给另一个回调,即RecoveryCallback。Spring-Retry还为@Retryable提供了@Recover注释,以重试失败后的处理方法。如果不需要回调方法,可以干脆不写回调方法,这样的效果是,重试次数结束后,如果还是不符合业务判断,就会抛出异常。

可以看到,pass-through参数是用Exception e写的,它是回调的联合代码(我们抛出这个Exception e通知,在重试次数用完或者失败的情况下触发这个回调方法)。

对于@Recover标注的方法,需要特别注意的是:

主要简单介绍一下Retryable在Springboot中的使用,主要适用场景和注意事项,在需要重试的时候还是很有用的。