项目中有个接口必须要上报成功,否则要进行重试
重试次数为9,重试时间为2,4,8,16,24,32,64,128,256,512
我用rxjava实现了任意次数和任意时间的重试,其实都是使用Retry操作符实现的,
和我上次写的一篇文章:
用Rxjava2解决Token过期 自动重新请求 ,网络请求队列
,
技术点基本一样,不同点在于上篇文章可以同时请求n个网络 ,这篇文章只能请求一个,
上篇文章没有重试时间。
import
io.reactivex.Observable
;
import
io.reactivex.ObservableSource
;
import
io.reactivex.functions.Function
;
* Created by 瑜哥 on 2018/4/13.
public class
RetryWithTime
implements
Function<Observable<Throwable>
,
ObservableSource<RequsetBean>> {
int
cur
* Consumer是简易版的Observer,他有多重重载,可以自定义你需要处理的信息,我这里调用的是只接受onNext消息的方法,
* 他只提供一个回调接口accept,由于没有onError和onCompete,无法再 接受到onError或者onCompete之后,实现函数回调。
* 无法回调,并不代表不接收,他还是会接收到on
1. 主要功能
最起初的话思考如果只是简单这样的话其实也好实现,重写httpClient里面就有相关的超时
重试
机制,但是如果要是实现了某个整体的方法来进行失败
重试
那不能更好。所以就根据这个想法实现了以下的几个功能:
可以更简单的针对整个方法来进行
延时
或者有失败
重试
的调用执行。
可以设置首次是否延迟执行以及延迟执行的
时间
。
可以设置失败
重试
调用的
本文口味:冰镇杨梅 预计阅读:20分钟
最近公司在搞活动,需要依赖一个第三方接口,测试阶段并没有什么异常状况,但上线后发现依赖的接口有时候会因为内部错误而返回系统异常,虽然概率不大,但总因为这个而报警总是不好的,何况死信队列的消息还需要麻烦运维进行重新投递,所以加上
重试
机制势在必行。
重试
机制可以保护系统减少因
网络
波动、依赖服务短暂性不可用带来的影响,让系统能更稳定的运行的一种保护...
Android-
Rx
java
常用操作符
1.应用场景
延时
执行操作 默认是子线程 可以通过observeOn 切换的是观察者的执行线程
Observable.just(1).delay(2000,TimeUnit.MILLISECONDS)
// .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Object>() {
@Override
public void a
业务需求当我们在app里发起
网络
请求
时,可能会因为各种问题导致失败。如何利用
Rx
Java
来实现出现错误后
重试
若干次,并且可以设定
重试
的
时间
间隔。具体实现
网络
请求
使用Retrofit来做,
请求
用户信息接口@GET("/userinfo?noToken=1")
Observable<Response> getUserInfoNoToken();
请求
用户信息接口的逻辑代码
三、
Rx
Java
flatMap操作符用法详解
四、
Rx
Java
concatMap操作符用法详解
五、
Rx
Java
onErrorResumeNext操作符实现app与服务器间token机制
六、
Rx
Java
retryWhen操作符...
Windows系统提供了一些
网络
延时
测试工具,以下是几种常用的工具:
1. ping命令:在命令提示符窗口中运行`ping 目标IP地址`,可以测试与目标IP地址之间的
网络
延迟和丢包情况。例如,`ping www.baidu.com`。
2. tracert命令:在命令提示符窗口中运行`tracert 目标IP地址`,可以跟踪数据包从本地到目标IP地址的路径并显示每个节点的延迟。例如,`tracert www.baidu.com`。
3. PathPing命令:在命令提示符窗口中运行`pathping 目标IP地址`,可以结合ping和tracert的功能,显示每跳的延迟和丢包情况,并给出整体路径的统计信息。例如,`pathping www.baidu.com`。
4. Network Monitor:这是Windows操作系统自带的
网络
监视工具,可以通过抓包记录
网络
数据并分析
网络
延迟等问题。
5. Wireshark:这是一个第三方开源的
网络
协议分析工具,可以捕获和分析
网络
数据包,用于诊断
网络
延迟和其他
网络
问题。
这些工具可以帮助你测试
网络
延迟并找出
网络
问题的原因。根据你的具体需求,选择合适的工具进行使用。
java.util.concurrent.ExecutionException 'android.enableAapt2' is deprecated and should not be use
15301