一、 Singleton单例模式
RetryInterceptorBuilder重试拦截器创建者
它为单例,同时为抽象类;
作为单例,它内部定义了三个静态内部类,并且继承于自己,三个静态内部类也为单例,分别为无状态、有状态、熔断的三个拦截器创建者,他们Override父类的build方法作为自身的创建;
由各个子类实现具体的Build过程,并作为单例存在;
下图为无状态重试拦截器创建者的定义,作为示意:
二、 Delegate委托模式
重试拦截器委托
AnnotationAwareRetryOperationsInterceptor类在创建具体的重试拦截器时候使用了委托,具体如下代码:
image.png
根据retry注解配置stateful的值,调用RetryInterceptorBuilder重试拦截器创建者,委托其进行具体拦截器的创建;
image.png三、 Command命令模式
在RetryTemplate模板类中获取上下文使用了命令模式,定义了共同的RetryPolicy接口,由各个具体的重试策略实现类去实现其自己的上下文信息的open动作。
image.png
比如SimpleRetryPolicy简单重试策略:
image.png
比如TimeoutRetryPolicy超时重试策略:
image.png
各自的策略定义自己的上下文信息,完成上下文创建的具体动作;
具体的命令实现类有:
四、 Template模板类
RetryTemplate作为一个模板类,定义整个重试的逻辑结构,提供四种组合场景的重试入口
image.png
其真正执行的操作的是doExecute方法;
网友评论