Sisyphus
Sisyphus 是支持过程式编程和注解编程的 java 重试框架。
特性
-
支持 fluent 过程式编程
-
基于字节码的代理重试
-
基于注解的重试,允许自定义注解
-
无缝接入 spring
-
无缝接入 spring-boot
-
接口与注解的统一
-
解决 spring-retry 与 guava-retrying 中的不足之处
v0.1.0 变更
- Recover 上下文增加入参,更加便于业务处理
更新记录
设计目的
综合了 spring-retry 和 gauva-retrying 的优势。
调整一些特性,使其更利于实际使用。
采用 Netty 类似的接口思想,保证接口的一致性,和替换的灵活性。
借鉴 Hibernate-Validator 的设计,允许用户自定义注解。
开源地址
快速开始
引入
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>sisyphus-core</artifactId>
<version>0.1.0</version>
</dependency>
入门代码
详情参见 RetryerTest
public void helloTest() {
Retryer.<String>newInstance()
.callable(new Callable<String>() {
@Override
public String call() throws Exception {
System.out.println("called...");
throw new RuntimeException();
}
}).retryCall();
}
代码分析
- callable
指定一个 callable 的实现。
我们打印一条日志,并且模拟一个程序异常。
日志信息
日志信息
called...
called...
called...
和一些其他异常信息。
重试触发的条件,默认是程序发生了异常
这里的重试间隔默认为没有时间间隔,一共尝试3次。(包括第一次程序本身执行)
拓展阅读
后期 Road-MAP
-
丰富上下文信息
-
丰富重试统计信息