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设计模式

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

  • SpringRetry策略设计

    SpringRetry策略设计 一、 BackOff策略整体的关系图: ExponentialBackOffPo...

  • SpringRetry线程安全设计

    SpringRetry线程安全设计 一、重试上下文缓存对各种策略的上下文进行了缓存,接口如下: 实现类有两: 默认...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 浅谈JS的一些设计模式

    @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 设计模式简介 设计模式概念解读 设计模式的发展与...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • SpringRetry包结构

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

网友评论

    本文标题:SpringRetry设计模式

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