“重试”的实现

简介:
在软件开发中,经常会有这样一种需求:当发生异常、特殊情况、失败等条件的时候,重试执行,最大重试次数为N次。如果超过N次还是没有成功,则跳过。
 
这个问题常常常常令人感觉有些棘手,因为java没哟goto,而且要对次数、失败条件进行判断比较等。
 
在此做深入分析:
重试,意味着代码要反复执行,需要做循环。
当特殊条件出现才反复,则需要判断特殊条件,需要if语句。
有最大次数限制,说明循环有最大次数n<?。
没有成功、跳过,说明程序没有因为特殊情况挂掉,要捕获异常和特殊情况。在特殊条件发生时做一些补救(重试处理)。
 
针对谁上面的分析再写代码就容易很多了:
 
通常会将最大重试次数作为系统的参数让用户配置,并且对数据范围做处理。
 
下面是伪代码:
...... 

int redo = 0;      //重试次数 
while(redo<MAXTRY+1){      //MAXTRY为最大重试次数 
         try
                doSomething();     //可能发生特殊情况的方法 
                 break;                     //执行成功后直接退出此循环 
        } catch
                redo++;                  //异常时,重试次数增加 
                 continue;              //结束本次循环 
        } 


......
 
此方式适合Java、C#、C++等语言。
 

本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/204676,如需转载请自行联系原作者
相关文章
|
28天前
SpringRetry接口重试机制
SpringRetry接口重试机制
16 1
|
7月前
|
数据采集 网络协议 Java
HTTP调用:你考虑到超时、重试、并发了吗?
今天,我们一起聊聊进行 HTTP 调用需要注意的超时、重试、并发等问题。
211 0
|
7月前
|
安全 Java
Hystrix超时机制为服务接口调用超时提供安全保护
Hystrix超时机制为服务接口调用超时提供安全保护
85 1
|
10月前
|
分布式计算 Spark
SPARK outputDeterministicLevel的作用--任务全部重试或者部分重试
SPARK outputDeterministicLevel的作用--任务全部重试或者部分重试
48 0
|
11月前
一日一技:在ES批量插入数据超时时自动重试
一日一技:在ES批量插入数据超时时自动重试
335 0
|
消息中间件 Apache RocketMQ
PushConsumer消息消费重试
消费者出现异常,消费某条消息失败时, Apache RocketMQ 会根据消费重试策略重新投递该消息进行故障恢复。
|
负载均衡 Java 测试技术
聊聊openfeign的超时和重试
聊聊openfeign的超时和重试
1440 0
|
消息中间件 监控 Java
消息重试|学习笔记
快速学习消息重试,消息重试。为什么会有消息重试机制?消息重试目的是保证消息一定会被消费掉。 消息重试分为两个方面:一是对于顺序消息的重试;二是无序消息的重试。
137 0
消息重试|学习笔记
|
Dubbo 应用服务中间件 数据库
重试次数|学习笔记
快速学习重试次数
100 0
|
Java 开发者 Sentinel
Sentinel 服务降级之错误次数 | 学习笔记
快速学习 Sentinel 服务降级之错误次数
152 0