【问题标题】:Spring Webflux: backpressure for non Java clientSpring Webflux:非 Java 客户端的背压
【发布时间】: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


    【解决方案1】:

    不,因为 HTTP 协议不支持应用程序背压。 您可能会对RSocket 感兴趣,它是一种在协议级别支持背压的应用程序协议,以及许多其他功能。

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 2019-09-26
      • 2020-05-30
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2020-02-23
      相关资源
      最近更新 更多