Java 轮询(重发)机制
1.需求:
(1):支付成功需要给商户发送异步通知接口
(2):发送失败得情况下需要有重发机制,重发10次,如果10次还是失败,就不重发了
2.思路 :
(1):创建表,需要有时间,次数,状态,推送信息,唯一表示
(2):入库
(3):成功更新状态,失败更新状态(唯一标识)
3.技术
(1):TimeUnit是java.uitl.concurrent包下得一个类名,主要功能是暂停线程得操作与Thread.sleep()一样功能都是暂停线程
(2):Thread.sleep()只能精确到毫秒,只可以精确到毫秒数
//睡眠多久
(3):TimeUnit.SECONDS.sleep(intervalTime);
(4): * NANOSECONDS:毫微秒
* MICROSECONDS:微妙
* MILLISECONDS:毫秒
* SECONDS:秒
* MINUTES:分钟
* HOURS:小时
* DAYS:天
4.实现:
public class B {//最大重试次数 10private static final Integer tryTimes=10;//重时间隔单位秒private static final Integer intervalTime = 2;public static void main(String[] args) throws InterruptedException {boolean b = B.retryBuss();System.out.println("最终指向结果:"+(b ? "成功":"失败"));}private static boolean retryBuss() throws InterruptedException {Integer retryNum = 1;boolean flag = false;while (retryNum <= tryTimes){try {flag = execute(retryNum);if(flag){System.out.println("第"+retryNum+"成功");break;}System.out.println("第"+retryNum+"失败");TimeUnit.SECONDS.sleep(intervalTime);retryNum++;}catch (Exception e){retryNum++;continue;}}return flag;}/*** 具体得业务逻辑* @param retryNum* @return*/private static boolean execute(int retryNum) {Random random = new Random();int i = random.nextInt(20);boolean flag = true;try {if(i != 6 ){flag = false;throw new RuntimeException();}}catch (Exception e){}return flag;}}
Java 轮询(重发)机制相关推荐
- Apollo 中的 长轮询 定时机制
今天这篇文章来介绍一下Nacos配置中心的原理之一:长轮询机制的应用 为方便理解与表达,这里把 Nacos 控制台和 Nacos 注册中心称为 Nacos 服务器(就是 web 界面那个),我们编写的 ...
- 支付平台延时轮询/通知机制
在支付业务中经常会有一些轮询或者异步通知的场景,尤其是做为支付平台,往往接入多种支付渠道,需要轮询渠道交易结果或者为接入方提供标准的交易结果通知机制.有两种比较常见的场景:一.支付平台向渠道方下单成功 ...
- java 轮询请求接口_Android RxJava 实际应用讲解:(无条件)网络请求轮询
前言 Rxjava,由于其基于事件流的链式调用.逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎. Github截图 RxJava如此受欢迎的原因,在于其提供了丰富 & ...
- Retrofit+Rxjava服务器IP轮询重试机制实现
为了保证客户端稳定性和网络容错性,提升用户体验,在客户端建立服务端IP轮询及重试机制是十分有必要的,本文为我个人经验总结,希望对你能有参考价值. app在启动时会请求一些配置信息,其中就包括ip的路由 ...
- HTTP - 长连接 短连接 长轮询 短轮询 心跳机制
错觉与突然的察觉 大多数人都知道HTTP1.0不支持长连接,知道HTTP1.1支持长连接. 这是业界的一个常识. 然而这样的描述导致了一些不做网络底层开发的开发者都下意识的认为HTTP1.1是一个可以 ...
- java 轮询http_HTTP轮询模型
HTTP轮询模型 长短轮询 http协议是一种client-server模型的应用层协议,这种c-s的模式虽然大多数情况都能满足需求,但是某些场景也需要服务端能够将一些信息实时的推送到客户端,即实现服 ...
- java轮询文件停止线程,java 运行多线程轮询时,外部停止轮询
1,先建一个Map /** * 创建一个Map用于存放线程id对象集合,主要是用于到达岗亭之后扫码付费,如果人工收费就需要关闭线程,key是停车记录Id, */ public static MapMA ...
- java 轮询请求接口_js调用轮询接口
##### 项目中遇到需要很多个需要轮询处理的接口,然后简单的封装了下,做个记录,以后用到类似的直接copy ##### // polling-utils.js /** * @descripting ...
- java 轮询请求_使用RxJava来实现网络请求轮询功能
原标题:使用RxJava来实现网络请求轮询功能 近日有媒体报道称,腾讯重金入股永辉超市旗下生鲜超市超级物种,目前交易已经完成.受此刺激,永辉超市股价迅速涨停,午后临时停牌.若此举成行,超级物种将更有底 ...
最新文章
- MyBatis启动:MapperStatement创建
- Python之路----迭代器与生成器
- html5 获取多媒体,基于HTML5的多媒体支持
- expect返回值给shell_使用expect实现shell自动交互
- SpringSession实现用户会话
- leetcode--53. 最大子序和
- ObjecT4:On-line multiple instance learning (MIL)学习
- Android LinearLayout加载Fragment
- jtessboxeditorfx 界面显示不出来_macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示...
- day2 程序流程控制
- springMVC之自定义视图
- Ab压力测试Http
- word文件转pdf转换器注册码
- VBA遍历文件夹下的文件并且合并工作簿到一个工作簿中
- 德威控股在港交所招股书失效:2021年度利润大增,由杨时家族控股
- 微观经济学案例分析(四)
- 探索React生态圈
- 【MES系统】这个表格让您秒懂MES制造执行系统与ERP企业管理系统的区别及联系...
- 未雨绸缪-变化是永恒的
- head/head都可以放什么,什么作用?