Java重试框架Sisyphus配置的方式有哪些
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"Java重试框架Sisyphus配置的方式有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java重试框架Sisyphus配置的方式
千家信息网最后更新 2026年11月02日Java重试框架Sisyphus配置的方式有哪些
本篇内容主要讲解"Java重试框架Sisyphus配置的方式有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java重试框架Sisyphus配置的方式有哪些"吧!
1、函数式配置概览
为了满足更加方便的配置,Retryer 类提供了许多可以配置的信息。
1.1 默认配置
/** * 默认配置测试 */ public void defaultConfigTest() { Retryer.newInstance() .condition(RetryConditions.hasExceptionCause()) .retryWaitContext(RetryWaiter.retryWait(NoRetryWait.class).context()) .maxAttempt(3) .listen(RetryListens.noListen()) .recover(Recovers.noRecover()) .callable(new Callable() { @Override public String call() throws Exception { System.out.println("called..."); throw new RuntimeException(); } }).retryCall(); } 和下面的代码是等价的:
public void helloTest() { Retryer.newInstance() .callable(new Callable() { @Override public String call() throws Exception { System.out.println("called..."); throw new RuntimeException(); } }).retryCall(); } 2、方法说明
2.1 condition
重试触发的条件,可以指定多个条件。
默认为抛出异常。
2.2 retryWaitContext
重试等待的策略,可以指定多个。
默认为不做任何等待。
2.3 maxAttempt
指定最大重试次数,包括第一次执行。
默认值:3 次。
2.4 listen
指定重试的监听实现,默认为不做监听。
2.5 recover
当重试完成之后,依然满足重试条件,则可以指定恢复的策略。
默认不做恢复。
2.6 callable
待重试执行的方法。
2.7 retryCall
触发重试执行。
3、接口的详细介绍
3.1 接口及其实现
所有的接口,都可以直接查看对应的子类实例。
3.2 用户自定义
基于替换的灵活性,用户可以实现接口,定义更符合自己业务的实现。
3.3 sisyphus 注解
配置具有很高的灵活性,但是对于开发人员的使用,就没有注解那样简单灵活。
所以本框架也实现了基于注解的重试。
4、设计的规范
保证接口和注解二者的统一性。
4.1 maven 引入
${project.groupId} sisyphus-annotation ${project.version}
注解:
核心注解主要有两个。
4.2 Retry
用于指定重试的相关配置。
/** * 重试注解 * 1. 实际需要,只允许放在方法上。 * 2. 如果放在接口上,是否所有的子类都生效?为了简单明确,不提供这种实现。 * 3. 保持注解和接口的一致性。{@link com.github.houbb.sisyphus.api.core.Retry} 接口 * @author binbin.hou * @since 0.0.3 */ @Documented @Inherited @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @RetryAble(DefaultRetryAbleHandler.class) public @interface Retry { /** * 重试类实现 * @return 重试 * @since 0.0.5 */ Class extends com.github.houbb.sisyphus.api.core.Retry> retry() default DefaultRetry.class; /** * 最大尝试次数 * 1. 包含方法第一次正常执行的次数 * @return 次数 */ int maxAttempt() default 3; /** * 重试触发的场景 * @return 重试触发的场景 */ Class extends RetryCondition> condition() default ExceptionCauseRetryCondition.class; /** * 监听器 * 1. 默认不进行监听 * @return 监听器 */ Class extends RetryListen> listen() default NoRetryListen.class; /** * 恢复操作 * 1. 默认不进行任何恢复操作 * @return 恢复操作对应的类 */ Class extends Recover> recover() default NoRecover.class; /** * 等待策略 * 1. 支持指定多个,如果不指定,则不进行任何等待, * @return 等待策略 */ RetryWait[] waits() default {}; }4.3 RetryWait
用于指定重试的等待策略。
package com.github.houbb.sisyphus.annotation.annotation; import com.github.houbb.sisyphus.annotation.annotation.metadata.RetryWaitAble; import com.github.houbb.sisyphus.annotation.handler.impl.DefaultRetryWaitAbleHandler; import com.github.houbb.sisyphus.core.constant.RetryWaitConst; import com.github.houbb.sisyphus.core.support.wait.NoRetryWait; import java.lang.annotation.*; /** * 重试等待策略 * 1. 为了对应重试策略,所有的内置注解应该实现当前的注解。 * 2. 是否允许自定义注解? * * 当注解+对象同时出现的时候,视为组合。 * * @author binbin.hou * @since 0.0.3 */ @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented @Target(ElementType.ANNOTATION_TYPE) @RetryWaitAble(DefaultRetryWaitAbleHandler.class) public @interface RetryWait { /** * 默认值 * 1. fixed 模式,则对应固定等待时间 * 2. 递增 * @return 默认值 */ long value() default RetryWaitConst.VALUE_MILLS; /** * 最小值 * @return 最小值 */ long min() default RetryWaitConst.MIN_MILLS; /** * 最大值 * @return 最大值 */ long max() default RetryWaitConst.MAX_MILLS; /** * 影响因数 * 1. 递增重试,默认为 {@link RetryWaitConst#INCREASE_MILLS_FACTOR} * 2. 指数模式。默认为 {@link RetryWaitConst#MULTIPLY_FACTOR} * @return 影响因数 */ double factor() default Double.MIN_VALUE; /** * 指定重试的等待时间 class 信息 * @return 重试等待时间 class */ Class extends com.github.houbb.sisyphus.api.support.wait.RetryWait> retryWait() default NoRetryWait.class; }5、注解的使用
定义好了注解,肯定要有注解的相关使用。
关于注解的使用,主要有两种方式。
5.1 Proxy+CGLIB
基于代理模式和字节码增强。
如果是项目中没有使用 spring,直接使用这种方式比较方便。
5.2 Spring-AOP
可以和 spring 直接整合。
使用方式和 spring-retry 是一样的。
这些内容将放在下一节进行详细讲解。
到此,相信大家对"Java重试框架Sisyphus配置的方式有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
注解
配置
接口
策略
方式
方法
监听
框架
最大
次数
内容
多个
时间
条件
模式
最小
信息
因数
场景
子类
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网高科技
哈尔滨大商圈互联网科技有限公司
互联网科技工作委员会主任
互联网科技会
九亚互联网科技
奇酷互联网络科技公司
互联网巨头投资的硬核科技
中国最先进互联网科技公司
互联网科技公司招聘
互联网大会黑科技排名
知域互联网科技有限公司大骗子
民营互联网公司国防科技
翼展科技 首家互联网医院
卓翼科技产业互联网合作
沐思想互联网科技有限公司
江苏互联网科技小贷
上海乐五互联网科技有限公司
科技互联网经济论坛
重庆科技产业互联网有哪些
恒生互联网科技趋势
中国互联网科技股
互联网与科技发展
网络科技有限互联网
广州宏创互联网科技
互联网科技的英文
佰商互联网科技有限公司
上海宁丞科技互联网
互联网科技实习生岗位
利用互联网等科技手段
前海云享互联网科技