项目作者: houbb

项目描述 :
The java retry framework.(支持注解的 java 重试框架)
高级语言: Java
项目地址: git://github.com/houbb/sisyphus.git
创建时间: 2019-05-18T00:43:35Z
项目社区:https://github.com/houbb/sisyphus

开源协议:Apache License 2.0

关键词:
gauva guava-retrying java-retry retry spring-retry

下载


Sisyphus

Sisyphus 是支持过程式编程和注解编程的 java 重试框架。

Build Status
Maven Central

Open Source Love

sisyphus.jpg

特性

  • 支持 fluent 过程式编程

  • 基于字节码的代理重试

  • 基于注解的重试,允许自定义注解

  • 无缝接入 spring

  • 无缝接入 spring-boot

  • 接口与注解的统一

  • 解决 spring-retry 与 guava-retrying 中的不足之处

v0.1.0 变更

  • Recover 上下文增加入参,更加便于业务处理

更新记录

更新记录

设计目的

综合了 spring-retry 和 gauva-retrying 的优势。

调整一些特性,使其更利于实际使用。

采用 Netty 类似的接口思想,保证接口的一致性,和替换的灵活性。

借鉴 Hibernate-Validator 的设计,允许用户自定义注解。

spring-retry 与 guava-retrying 中的不足之处

开源地址

sisyphus

快速开始

引入

  1. <dependency>
  2. <groupId>com.github.houbb</groupId>
  3. <artifactId>sisyphus-core</artifactId>
  4. <version>0.1.0</version>
  5. </dependency>

入门代码

详情参见 RetryerTest

  1. public void helloTest() {
  2. Retryer.<String>newInstance()
  3. .callable(new Callable<String>() {
  4. @Override
  5. public String call() throws Exception {
  6. System.out.println("called...");
  7. throw new RuntimeException();
  8. }
  9. }).retryCall();
  10. }

代码分析

  • callable

指定一个 callable 的实现。

我们打印一条日志,并且模拟一个程序异常。

日志信息

日志信息

  1. called...
  2. called...
  3. called...

和一些其他异常信息。

重试触发的条件,默认是程序发生了异常

这里的重试间隔默认为没有时间间隔,一共尝试3次。(包括第一次程序本身执行)

拓展阅读

00-sisyphus 是什么

01-为什么选择 sisyphus

02-sisyphus 模块简介

03-sisyphus 快速开始

04-sisyphus 配置概览

05-sisyphus 注解简介

06-sisyphus 代理模板

07-sisyphus spring 整合

08-sisyphus springboot 整合

后期 Road-MAP

  • [ ] 丰富上下文信息

  • [ ] 丰富重试统计信息

中间件等工具开源矩阵

heaven: 收集开发中常用的工具类

rpc: 基于 netty4 实现的远程调用工具

mq: 简易版 mq 实现

ioc: 模拟简易版 spring ioc

mybatis: 简易版 mybatis

cache: 渐进式 redis 缓存

jdbc-pool: 数据库连接池实现

sandglass: 任务调度时间工具框架

sisyphus: 支持注解的重试框架

resubmit: 防止重复提交框架,支持注解

auto-log: 日志自动输出

async: 多线程异步并行框架