【问题标题】:Implementing http ratelimited service retry with Reactor使用 Reactor 实现 http ratelimited 服务重试
【发布时间】:2017-08-01 05:22:49
【问题描述】:

我刚刚开始使用 Java 中的 Reactor 3 进行反应式编程。我想使用reactor-netty 为http 服务实现一个客户端。到目前为止,我已经完美地发送了非常基本的 http 请求。但是,该服务希望客户端遵守速率限制(使用传统的X-RateLimit-LimitX-RateLimit-Remaining 等标头通知客户端)。

我想在请求受到速率限制时自动重试请求,但我不确定用反应流执行此操作的最“惯用”或最有效的方法是什么。我不能简单地睡在我的流线程中,所以我应该看什么?根据我目前所阅读的内容,我相信我想研究利用背压来完成这项任务,但我不确定从哪里开始。

抱歉,这个问题可能很宽泛。

【问题讨论】:

    标签: reactive-programming project-reactor


    【解决方案1】:

    如果限速信号来自响应,实现此目的的一个好方法是将其转换为特定异常,通过onError 在您的响应Mono 中传播它,并使用retryWhen 运算符进行延迟重试。

    reactor-extra 工件(groupId io.projectreactor.addons)中,您有一个Retry 实用程序类,可用作FunctionretryWhen 的构建器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多