如何解决使用 Resilience4j RateLimiter 减慢 RxJava3 Flowable
我已经尝试了 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 个项目。我一定是做错了什么,不知道是什么。有人可以帮忙吗?
解决方法
Resilience4j RateLimiter 不限制一个订阅(或一个 Flowable 发出)消耗的项目的速率。 RateLimiter 限制一个 Flowable 上(并发)订阅的数量。 例如,如果许多客户端想要订阅同一个上游 Flowable,例如HTTP 调用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。