Java 弹簧腹板不能够显示背压

Java 弹簧腹板不能够显示背压,java,spring,project-reactor,spring-webflux,Java,Spring,Project Reactor,Spring Webflux,我正试图用spring web Responsive展示背压,就像这里用akka展示的一样- (在28:20和29:20之间观看) 为了试用它,我使用了github的以下示例项目 设置项目后,我在HomeController.java中添加了一个新端点,如下所示: @RequestMapping(value = "/longflux",produces = "application/stream+json") public Flux<Long> longFlux(){ ret

我正试图用spring web Responsive展示背压,就像这里用akka展示的一样- (在28:20和29:20之间观看)

为了试用它,我使用了github的以下示例项目

设置项目后,我在HomeController.java中添加了一个新端点,如下所示:

@RequestMapping(value = "/longflux",produces = "application/stream+json")
public Flux<Long> longFlux(){
    return Flux.interval(Duration.ofMillis(10)).log();
}

我无法理解为什么在curl命令挂起后的某个时间请求异常终止(在spring web反应式实现中),而在akka示例中(如youtube链接中所示),服务器在tcp缓冲区满后停止发布事件。

Flux.interval
是一个特例,因为它是一个热源,时间不受反应器的缓冲;这意味着,若你们的请求周期由于背压而变慢,而你们的间隔源产生的速度更快,反应堆将发出一个错误信号

您可以使用
.onBackpressureDrop()
操作符更新此示例,以在出现背压时降低间隔。这应该像预期的那样

有许多方法可以说明背压,包括:

  • 使用
    delay
    运算符延迟订阅
  • 模拟多个慢速客户端(带宽和延迟)

感谢布赖恩的指点。我现在可以用下面的源代码来说明背压。这次我没有使用热源,而是创建了一个列表,然后使用流来创建源@RequestMapping(value=“/longflux”,products=“application/stream+json”)公共流量longflux(){List List=new ArrayList();for(int i=0;i
2017-02-16 08:49:48.480 ERROR 3500 --- [        timer-1] reactor.Flux.Interval.4                  : onError(reactor.core.Exceptions$OverflowException: Could not emit value 2578 due to lack of requests)
2017-02-16 08:49:48.481 ERROR 3500 --- [        timer-1] reactor.Flux.Interval.4                  : 
reactor.core.Exceptions$OverflowException: Could not emit value 2578 due to lack of requests
    at reactor.core.Exceptions.failWithOverflow(Exceptions.java:151) ~[reactor-core-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at reactor.core.publisher.FluxInterval$IntervalRunnable.run(FluxInterval.java:98) ~[reactor-core-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at reactor.core.scheduler.SingleTimedScheduler$TimedPeriodicScheduledRunnable.run(SingleTimedScheduler.java:394) ~[reactor-core-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_121]