1 Star 0 Fork 45

Ziii_ / retrieval

forked from spjich / retrieval 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
两种形式.md 1.88 KB
一键复制 编辑 原始数据 按行查看 历史
spjich 提交于 2019-01-02 16:08 . spring aspect

两种形式

callback

回调形式: 组件采取方法回调的方式通知调用者,将判断的权利交给用户,更加灵活

采用build方法进行构造,用户实现Retryable接口中的方法

new RetryBuilder().build().proceed((round, nanos) -> "success");

condition

条件形式: 组件不会回调任何方法(包括whenError,whenFinish,postCondition,preCondition)whenTimeout除外,只根据failOn以及continueOn进行循环控制

采用buildCondition方法进行构造,用户实现ConditionRetryable接口中的get方法

        Class[] failOn = {IllegalAccessException.class};
        Class[] continueOn = {IllegalArgumentException.class};
        new RetryBuilder()
                .withCondition()
                .failOn(failOn)
                .continueOn(continueOn)
                .build()
                .proceed(() -> "success");
  • 当匹配到failOn异常时,抛出ProceedException,cause为具体异常
  • 当匹配到continueOn异常时,继续循环。未匹配到时抛出ProceedException,cause为具体异常
  • 先判断failOn后判断continueOn
  • 如果failOn,continueOn都未匹配上时继续循环
例1
Class[] failOn = {IllegalAccessException.class};
当发生IllegalAccessException时程序将抛出ProceedException满足failOn
当发生 IllegalAccessException外的其他异常时将继续运行
例2
Class[] continueOn = {IllegalAccessException.class,RuntimeException.class};
当发生IllegalAccessException时将继续运行满足continueOn
当发生 IllegalAccessExceptionRuntimeException 外的其他异常时程序将抛出ProceedException
例3
Class[] failOn = {RuntimeException.class};
Class[] continueOn = {RuntimeException.class};
当发生RuntimeException时程序将抛出ProceedException(先判断`failOn`后判断`continueOn`)
Java
1
https://gitee.com/zhouzhimin/retrieval.git
git@gitee.com:zhouzhimin/retrieval.git
zhouzhimin
retrieval
retrieval
master

搜索帮助