首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏程序员Gank

    【译】对RxJava中-repeatWhen()和-retryWhen()操作符的思考

    第一次见到.repeatWhen()和.retryWhen()这两个操作符的时候就非常困惑了。不得不说,它们绝对是“最令人困惑弹珠图”的有力角逐者。 ? 这种情况下就需要.repeatWhen()和.retryWhen()的介入了,因为它们允许你为重试提供自定义逻辑。 这是.retryWhen()的方法签名(译者注:方法签名,指方法名称、参数类型和参数数量等): retryWhen(Func1<? super Observable<? 经验之谈 这里有一些关于.repeatWhen()和.retryWhen()的要点,我们应该牢记于心。 .repeatWhen()与.retryWhen()非常相似,只不过不再响应onError作为重试条件,而是onCompleted。

    2.4K30发布于 2018-07-23
  • 来自专栏小鄧子的技术博客专栏

    【译】对RxJava中.repeatWhen()和.retryWhen()操作符的思考

    第一次见到.repeatWhen()和.retryWhen()这两个操作符的时候就非常困惑了。不得不说,它们绝对是“最令人困惑弹珠图”的有力角逐者。 ? 这种情况下就需要.repeatWhen()和.retryWhen()的介入了,因为它们允许你为重试提供自定义逻辑。 这是.retryWhen()的方法签名(译者注:方法签名,指方法名称、参数类型和参数数量等): retryWhen(Func1<? super Observable<? 经验之谈 这里有一些关于.repeatWhen()和.retryWhen()的要点,我们应该牢记于心。 .repeatWhen()与.retryWhen()非常相似,只不过不再响应onError作为重试条件,而是onCompleted。

    1.4K20发布于 2018-08-20
  • 来自专栏Play & Scala 技术分享

    Play-Utils:一个专门为 Play Framework 开发的实用工具包模块

    你也可以使用 retryWhen 设置重试条件: import scala.concurrent.duration._ retry.withFixedDelay[Int](3, 1 seconds) { () => Future.successful(0) }.retryWhen(_ ! Retry.withFixedDelay[Int](3, 1 seconds).apply { () => Future.successful(0) }.retryWhen(s => s ! scala.concurrent.duration._ retry.withFibonacciDelay[Int](4, 1 seconds) { () => Future.successful(0) }.retryWhen scala.concurrent.duration._ retry.withFibonacciDelay[Int](4, 2 seconds) { () => Future.successful(0) }.retryWhen

    79620发布于 2019-03-12
  • 来自专栏Android先生

    RxJava2 实战知识梳理(6) - 基于错误类型的重试请求

    下面我们就来演示如何通过RxJava2来轻松实现上面的三点需求,通过这篇文章,我们将学习retryWhen操作符的具体用法,retryWhen和repeatWhen经常被大家用来比较,如果对repeatWhen 二、示例解析 2.1 retryWhen 介绍 retryWhen的原理图如下所示: ? retryWhen提供了重订阅的功能,对于retryWhen来说,它的重订阅触发有两点要素: 上游通知retryWhen本次订阅流已经完成,询问其是否需要重订阅,该询问是以onError事件触发的。 retryWhen根据onError的类型,决定是否需要重订阅,它通过返回一个ObservableSource<? 可以看到,retryWhen 和repeatWhen 最大的不同就是:retryWhen 是收到onError 后触发是否要重订阅的询问,而repeatWhen 是通过 onComplete触发。

    1.7K10发布于 2018-08-07
  • 来自专栏Java与Android技术栈

    Kotlin Coroutines Flow 系列(三) 异常处理

    ...... } .onEach { ...... } .catch { ... } .collect() } 5.2 retry、retryWhen > { require(retries > 0) { "Expected positive amount of retries, but had $retries" } return retryWhen Emitting 1 Emitting 2 Emitting 1 Emitting 2 java.lang.RuntimeException: Error on 3 ...... retry 操作符最终调用的是 retryWhen (it == 3) throw RuntimeException("Error on $it") } .onEach { println("Emitting $it") } .retryWhen cause, attempt -> attempt < 2 } .catch { it.printStackTrace() } .collect() } 因为 retryWhen

    2.1K20发布于 2020-02-19
  • 来自专栏写字母的代码哥

    精讲响应式WebClient第6篇-请求失败自动重试机制

    所以说Webclient已经在源码中,将retryBackoff()标记为废弃,建议使用retryWhen()代替它。retryWhen()可以指定针对某些异常进行重试,其他异常不做重试。 clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient))) .build(); 3.2.测试retryWhen 用Retry对象定义请求重试的条件,也就是retryWhen的when Retry<? uri("/posts/1") // 请求路径,这里的请求路径是正确的 .retrieve() .bodyToMono(String.class) .retryWhen retryWhen(retry) 满足retry条件进行重试 3.3.retryWhen的其他方法 onlyIf()表示捕获到指定的某个异常,进行请求重试 allBut()表示除了某个异常之外,其他的异常被捕获则进行请求重试

    3.3K31发布于 2020-09-23
  • 来自专栏Android知识分享

    Android:RxJava 结合 Retrofit 全面实现 网络请求出错重连

    功能说明 功能需求说明 注:关于 Rxjava中的retryWhen() 操作符的使用请看文章Android RxJava:功能性操作符 全面讲解 功能逻辑 实例说明 在本例子中:采用Get方法对 网络请求 进行封装 Observable<Translation> observable = request.getCall(); // 步骤4:发送网络请求 & 通过retryWhen ()进行重试 // 注:主要异常才会回调retryWhen()进行重试 observable.retryWhen(new Function<Observable<Throwable * 需求2:实现重试 * 通过返回的Observable发送的事件 = Next事件,从而使得retryWhen

    2.2K30发布于 2019-02-22
  • 来自专栏Android知识分享

    Android RxJava应用:网络请求出错重连(结合Retrofit)

    功能说明 功能需求说明 注:关于 Rxjava中的retryWhen() 操作符的使用请看文章Android RxJava:功能性操作符 全面讲解 功能逻辑 实例说明 在本例子中:采用Get方法对 网络请求 进行封装 Observable<Translation> observable = request.getCall(); // 步骤4:发送网络请求 & 通过retryWhen ()进行重试 // 注:主要异常才会回调retryWhen()进行重试 observable.retryWhen(new Function<Observable<Throwable * 需求2:实现重试 * 通过返回的Observable发送的事件 = Next事件,从而使得retryWhen

    1.8K20编辑于 2022-03-25
  • 来自专栏小鄧子的技术博客专栏

    All RxJava - 为Retrofit添加重试

    RetryWhen! 首先,我们需要认清的事实是:所有的网络异常都属于I/O异常。 因此.retry()以及它的重载函数已经不能满足我们的需求了,好在RxJava为我们提供了另一个非常有用的操作符.retryWhen(),我们可以通过判断异常类型,来决定是否发起重试(重订阅)。 .retryWhen()的函数签名如下: public final Observable<T> retryWhen(Func1<? super Observable<? > observable = Observable.create(func).retryWhen(new RetryWhenHandler(retryCount)); if (scheduler 参考 【译】对RxJava中.repeatWhen()和.retryWhen()操作符的思考 - 邓伟

    1.9K10发布于 2018-08-20
  • 来自专栏Android开发经验分享

    RxJava之异常捕获操作符介绍

    onErrorComplete onErrorResumeNext onErrorReturn onErrorReturnItem onExceptionResumeNext retry retryUntil retryWhen ---- retryWhen 遇到 error 事件 根据 retryWhen 的回调来确定是否重试。 return Observable.just(x); } } }); source.retryWhen

    84320编辑于 2022-12-19
  • 来自专栏码匠的流水账

    聊聊spring cloud gateway的RetryGatewayFilter

    Mono.fromDirect(chain.filter(exchange) .log("retry-filter", Level.INFO) .retryWhen 小结 RetryGatewayFilter借助了reactor-addons的retry组件进行了重试,主要使用了Mono的repeatWhen及retryWhen方法,前者在onCompleted的时候触发 doc reactor-extra-retry 聊聊reactor extra的retry RxJava’s repeatWhen and retryWhen, explained

    1.9K20发布于 2018-09-17
  • 来自专栏码匠的流水账

    聊聊reactor extra的retry

    .asString().next().log().then()); }).doOnError(e -> e.printStackTrace()) .retryWhen .asString().next().log().then()); }).doOnError(e -> e.printStackTrace()) .retryWhen

    1.5K10发布于 2018-09-17
  • 来自专栏设计模式

    你一定会用到的RxJava常用操作符

    just() create() interval() timer() range() error() defer() 重做 repeat() repeatWhen() 重试 retry() retryWhen long count); public final Observable<T> retry(Func2<Integer, Throwable, Boolean> predicate); 举例: retryWhen () public final Observable<T> retryWhen(final Func1<? 其他 retryWhen() API: public final Observable<T> retryWhen(final Func1<? super Observable<?

    1.7K40发布于 2020-12-15
  • 来自专栏三流程序员的挣扎

    RxJava 错误处理操作符

    emitter.onNext(it) } }) 则同样的代码收到的是 onNext(0) onNext(1) onNext(-1) onComplete() retry/retryUntil/retryWhen var i = 0 ob.retryUntil { i++ > 1 // i > 1 时已经重试两次了,返回 true 以停止重试 }.subscribe(observerInt) ob.retryWhen

    1.3K20发布于 2018-09-11
  • 来自专栏草根专栏

    RxJS -- Subscription

    setTimeout(() => { subscription.unsubscribe(); }, 1100); 运行结果: 这个例子很好的解释了我写的那一堆拗口的解释.. retry, retryWhen 运行结果: 可以看到, retry/retryWhen其实的原理即是先unsubscribe然后再重新subscribe而已, 所以每次retry都会运行我所称的毁灭函数.

    1.2K50发布于 2018-03-29
  • 来自专栏后端学习之道

    Spring WebClient vs RestTemplate——比较和特点

    WebClient 提供的一项关键功能是retryWhen(). 对于更具弹性的系统,这是一个很棒的功能,您可以在使用 WebClient 时添加它。 .uri(String.join("", "/users", id)) .retrieve() .bodyToMono(UserDto.class) .retryWhen (Retry.fixedDelay(5, Duration.ofMillis(100))) .block(); retryWhen将重试类作为参数。

    2.3K10编辑于 2023-10-14
  • 来自专栏Android常用基础

    Rxjava2-小白入门(三)

    这个版本默认引入的是Rxjava2.0.2的版本 ---- Rxjava2的操作符 create just fromArray map flatMap zip filter time merge retry retryWhen ---- 所有的实例都讲完了我们在看下retryWhen和retry,range操作符。 ? retry操作符 ? ? ? ? ? ? retryWhen和retry的主要区别概括来说就是retryWhen将错误的信息发送下去(出错了就发送错误信息),retry是出错了会先尝试重新订阅再发送一变,当达到设置的重试次数时还没有成功才会发出错误的信息

    94520发布于 2018-09-11
  • 来自专栏小鄧子的技术博客专栏

    三行情诗

    retryWhen(new Func1<Observable<?

    67030发布于 2018-08-20
  • 来自专栏码农沉思录

    Spring Cloud Gateway重试机制

    = null) { // retryWhen returns a Mono<Void> // retry needs to go before repeat publisher = ((Mono<Void>)publisher).retryWhen(retry.withApplicationContext(exchange));

    85020发布于 2019-07-12
  • 来自专栏猿天地

    Spring Cloud Gateway重试机制

    = null) { // retryWhen returns a Mono<Void> // retry needs to go before repeat publisher = ((Mono<Void>)publisher).retryWhen(retry.withApplicationContext(exchange));

    2.3K30发布于 2018-10-23
领券