Spring Retry

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen517611641/article/details/88391434

RetryContext:
RetryContextCache:一个类似于Map的数据结构,Stateful Retry Policies用其存储和查找RetryContext对象;
RetryCallback:一个可以使用RetryOperations提供的方法被重试的操作的回调接口;将需要重试的业务操作用RetryCallback包裹一下,然后将RetryCallback传递给RetryOperations间接执行业务操作,此时的业务操作就具有了重试语义;
RecoveryCallback:在重试次数耗尽完之后,会调用此接口的提供的回调方法的逻辑;
RetryState:有状态的重试(Stateful retry)的特点是必须识别出正在被处理的item;此接口主要用来在重试时提供缓存正在被处理的item的能力;在尝试重试的过程中,如果程序抛出的Exception经过check之后,发现不需要rollback,则可以将有状态的重试切换成无状态的重试(stateless retry),以优化RetryOperations的操作,RetryState可以提供当前程序抛出的Exception是否需要rollback的信息;
RetryOperations:提供两个有状态的重试方法,两个无状态的重试方法;
RetryPolicy:RetryPolicy负责分配和管理RetryOperations需要的资源;分为Stateless RetryPolicy,比如SimpleRetryPolicy和TimeoutRetryPolicy;这个资源也就是RetryContext对象;RetryPolicy允许RetryOperations;
RetryListener:可以为一次重试增加额外的行为;RetryOperations的实现,可以在重试的生命周期内,回调RetryListener的对应的方法;
Classifier:DefaultRetryState中用来判断一个Throwable是否是需要rollback的类型;
RetryStatistics:获取统计信息;统计信息是StatisticsListener生成的,StatisticsRepository用于保存统计信息;

BackOffContext:一次失败的重试之后,通常不会立即进行下一次重试,这样通常毫无意义;比较合适的做法是等待一段时间;BackOffContext持有的是计算这个等待时间有多长的信息及计算的逻辑;
Sleeper:阻塞当前线程一段时间的操作
BackOffPolicy:BackOffPolicy使用BackOffContext提供的等待时间,使用其持有的Sleeper接口的实现,阻塞当前重试线程;

猜你喜欢

转载自blog.csdn.net/chen517611641/article/details/88391434
今日推荐