【问题标题】:Slowing down RxJava3 Flowable with Resilience4j RateLimiter使用 Resilience4j RateLimiter 减慢 RxJava3 Flowable
【发布时间】:2021-01-05 17:01:21
【问题描述】:

我已经尝试过 Resilience4J 示例,但速率限制器似乎不符合我的要求:

@Test
public void simpleReactiveWithRateLimiter() {
    RateLimiterConfig rateLimiterConfig = RateLimiterConfig.custom()
        .limitForPeriod(5)
        .limitRefreshPeriod(Duration.ofSeconds(1))
        .timeoutDuration(Duration.ofMillis(100))
        .build();
    RateLimiterRegistry rateLimiterRegistry = RateLimiterRegistry.of(rateLimiterConfig);
    RateLimiter rateLimiter = rateLimiterRegistry.rateLimiter("tenPerSec", rateLimiterConfig);
    Flowable.interval(1, TimeUnit.MILLISECONDS)
        .takeWhile(f -> f < 100)
        .compose(RateLimiterOperator.of(rateLimiter))
        .blockingSubscribe(i -> log.info("Received {}", i));
}

它仍然在不到 200 毫秒的时间内处理了 100 个项目。我一定是做错了什么,不知道是什么。有人可以帮忙吗?

【问题讨论】:

    标签: rx-java resilience4j rx-java3


    【解决方案1】:

    Resilience4j RateLimiter 不限制一个订阅消耗的项目的速率(或一个 Flowable 发出的)。 RateLimiter 限制一个 Flowable 上的(并发)订阅数量。 例如,如果许多客户端想要订阅相同的上游 Flowable,例如HTTP 调用。

    【讨论】:

      猜你喜欢
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 2020-06-21
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2020-07-15
      相关资源
      最近更新 更多