【发布时间】:2019-11-08 12:36:41
【问题描述】:
有没有办法为非 Java 订阅者使用背压(例如,一些 JS 库)?
对于这个发布者
Flux.range(1, 100)
还有这个订阅者:
public class SystemOutBackpressureSubscriber<T> extends BaseSubscriber<T> {
private int delay;
public SystemOutBackpressureSubscriber(int delay) {
this.delay = delay;
}
public void hookOnSubscribe(Subscription subscription) {
request(1);
}
public void hookOnNext(T value) {
System.out.println(value);
if(delay != 0) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
request(1);
}
}
如果delay == 0 一次打印所有数字,但如果delay != 0 在打印每个数字之前有暂停。除了 JS 有什么方法可以做同样的事情吗?在我查看的所有互联网示例中,JS 客户端只能监听事件流。如果 Rest 控制器返回像 Flux.range(1, 100) 这样的生产者,是否可以改变客户端上的事件频率?
【问题讨论】:
标签: spring-webflux project-reactor