SpringRetry设计模式

作者: 梦想又照进现实 | 来源:发表于2019-11-08 11:21 被阅读0次

    一、 Singleton单例模式
    RetryInterceptorBuilder重试拦截器创建者
    它为单例,同时为抽象类;

    image.png

    作为单例,它内部定义了三个静态内部类,并且继承于自己,三个静态内部类也为单例,分别为无状态、有状态、熔断的三个拦截器创建者,他们Override父类的build方法作为自身的创建;
    由各个子类实现具体的Build过程,并作为单例存在;
    下图为无状态重试拦截器创建者的定义,作为示意:

    image.png

    二、 Delegate委托模式
    重试拦截器委托
    AnnotationAwareRetryOperationsInterceptor类在创建具体的重试拦截器时候使用了委托,具体如下代码:


    image.png

    根据retry注解配置stateful的值,调用RetryInterceptorBuilder重试拦截器创建者,委托其进行具体拦截器的创建;

    image.png

    三、 Command命令模式
    在RetryTemplate模板类中获取上下文使用了命令模式,定义了共同的RetryPolicy接口,由各个具体的重试策略实现类去实现其自己的上下文信息的open动作。


    image.png

    比如SimpleRetryPolicy简单重试策略:


    image.png

    比如TimeoutRetryPolicy超时重试策略:


    image.png

    各自的策略定义自己的上下文信息,完成上下文创建的具体动作;
    具体的命令实现类有:

    image.png

    四、 Template模板类
    RetryTemplate作为一个模板类,定义整个重试的逻辑结构,提供四种组合场景的重试入口


    image.png

    其真正执行的操作的是doExecute方法;

    相关文章

      网友评论

        本文标题:SpringRetry设计模式

        本文链接:https://www.haomeiwen.com/subject/mbyibctx.html