• Stars
    star
    181
  • Rank 212,110 (Top 5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The java retry framework.(支持注解的 java 重试框架)

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

快速开始

引入

<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次。(包括第一次程序本身执行)

拓展阅读

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: 多线程异步并行框架

More Repositories

1

sensitive-word

👮‍♂️The sensitive word tool for java.(敏感词/违禁词/违法词/脏词。基于 DFA 算法实现的高性能 java 敏感词过滤工具框架。请勿发布涉及政治、广告、营销、翻墙、违反国家法律法规等内容。高性能敏感词检测过滤组件,附带繁体简体互换,支持全角半角互换,汉字转拼音,模糊搜索等功能。)
Java
4,032
star
2

sensitive

🔐Sensitive log tool for java, based on java annotation. (基于注解的 java 日志脱敏工具框架,更加优雅的日志打印。支持自定义哈希、支持基于 log4j2 插件的统一脱敏、支持 logback 插件统一脱敏)
Java
566
star
3

opencc4j

🇨🇳Open Chinese Convert is an opensource project for conversion between Traditional Chinese and Simplified Chinese.(java 中文繁简体转换)
Java
465
star
4

cache

The basic cache tool for java.(java 手写实现渐进式 redis 缓存工具)
Shell
360
star
5

awesome-metaverse-zh

Awesome metaverse projects (元宇宙精选资源汇总)
Batchfile
348
star
6

pinyin

The high performance pinyin tool for java.(java 高性能中文转拼音工具。支持同音字。)
Java
230
star
7

word-checker

🇨🇳🇬🇧Chinese and English word spelling corrector.(中文易错别字检测,中文拼写检测纠正。英文单词拼写校验工具)
Java
229
star
8

nlp-hanzi-similar

The hanzi similar tool.(汉字相似度计算工具,中文形近字算法。可用于手写汉字识别纠正,文本混淆等。)
Java
215
star
9

junitperf

⛵️Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)
Java
184
star
10

markdown-toc

🎄Generate toc for github markdown file.(为 markdown 文件生成 toc 目录)
Java
167
star
11

segment

The jieba-analysis tool for java.(基于结巴分词词库实现的更加灵活优雅易用,高性能的 java 分词实现。支持词性标注。)
Java
137
star
12

mq

The message queue in java.(java 简易版本 mq 实现)
Java
113
star
13

rpc

Java rpc framework based on netty4.(java 手写 dubbo rpc 框架)
Java
97
star
14

data-factory

🏭Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)
Java
87
star
15

resubmit

The repeat submit tool for java.(java 防止重复提交框架,支持注解。支持 spring, springboot 整合。)
Java
78
star
16

iexcel

📚IExcel is a java tool for create and read excel easy.(excel 读取和写入,解决 excel OOM 问题。)
Java
53
star
17

idoc

🌾Generate doc for java maven project.(java 项目自动生成文档)
Java
50
star
18

auto-log

The auto log tool for java.(java 自动日志输出,基于字节码,兼容 spring)
Java
48
star
19

validator

🚥Fluent-validation framework for java extend from hibernate-validator.(java 对象属性流式验证框架,下一代校验框架。兼容实现 jakarta bean validation、jsr 303、hibernate-validator)
Java
45
star
20

lombok-ex

Java compile time annotation, lombok extension framework.(java 编译时注解框架,对 lombok 进行扩展)
Java
43
star
21

heaven

⭐Collect basic useful tools for java dev.(收集开发中常用的工具类)
Java
37
star
22

ioc

The java ioc framework(从零开始手写模拟 spring Ioc 框架)
Java
34
star
23

word-cloud

The word cloud tool for java.(java 好用的词云工具-云图)
Java
31
star
24

nginx4j

nginx4j 是 nginx 的java 版本。
Java
31
star
25

async

🦄The async tool for java.(Java 多线程异步并行框架,基于 java 字节码,支持注解。)
Java
28
star
26

houbb.github.io

🧀The blog for github pages.
JavaScript
28
star
27

mybatis

The simple mybatis.(手写简易版 mybatis)
Java
23
star
28

csv

The csv read/write tool based on java annotation.(基于 java 注解的 CSV 文件读写框架工具。)
Java
23
star
29

rate-limit

🎃Rate limit for java.(java 渐进式限流工具框架,支持 spring springboot 字节码)
Java
22
star
30

sensitive-word-admin

The sensitive tool admin.(敏感词工具对应的控台)
HTML
20
star
31

minicat

The mini tomcat.(手写从零实现简易版 tomcat。别称【嗅虎】心有猛虎,轻嗅蔷薇。)
Java
18
star
32

jdbc-pool

The jdbc pool for java.(java 手写 jdbc 数据库连接池实现)
Java
17
star
33

lock

The distributed lock tool for java.(java 实现开箱即用基于 redis 的分布式锁,支持可重入锁获取。内置整合 spring、springboot。)
Java
8
star
34

leetcode

The leetcode problem solutions.(力扣算法个人学习笔记) 查询、排序、五大算法汇总
Java
3
star
35

houbb

my readme
1
star
36

nlp-keyword

nlp-keyword based on segment.(基于分词的 NLP keyword 关键词)
Java
1
star
37

hibernate

The simple database orm hibernate.(java 从零实现简易版本 hibernate)
Java
1
star
38

mvc

High performance web mvc framework for java.(高性能 java web mvc 框架)
Java
1
star
39

logstash4j

log stash in java.(简易版 logstash 实现)
Java
1
star