Smart Retry 主要是用来进行方法重试的。和Guava Retry、Spring Retry相比,Smart Retry最大的特点是异步重试,支持持久化,系统重启之后可以继续重试。
项目特点
- 方法重试持久化,系统重启之后可以继续重试
- 异步重试(不支持同步重试)
- 支持接口实现和声明式方式
- 大量的扩展点
- 提供重试Job可视化管理
适用场景
- 方法重试需要持久化,系统重启、宕机恢复之后继续重试,直到重试成功
- 分布式事务最终一致性
使用示例
<dependency>
<groupId>com.github.hadoop002.smartretry</groupId>
<artifactId>retry-spring4</artifactId>
<version>1.3.3</version>
</dependency>
@RetryFunction(identity = "order.payment")
public void payOrderAndUpdateStatus(Order order) {
boolean success = paymentBusiness.doPayment(order);
if (success) {
orderBusiness.updateOrderPayStatus(order);
} else {
orderBusiness.updateOrderPayFail(order);
}
}