使用RxJava实现接口重试

如果接口请求失败,使用二进制指数退避算法进行接口重试。

Observable
        .create((ObservableEmitter<Object> emitter) -> {
            System.out.println("开始请求接口...");
            emitter.onError(new RuntimeException("请求接口异常..."));
        })
        .retryWhen((Observable<Throwable> errorObservable) -> errorObservable
                .zipWith(Observable.just(1, 2, 4, 8, 16), (Throwable e, Integer time) -> time)
                .flatMap((Integer delay) -> {
                    System.out.println(delay + "秒后重试");
                    return Observable.timer(delay, TimeUnit.SECONDS);
                }))
        .subscribe(System.out::println);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。