订阅在什么时候进行?(弹簧网络通量)

Dar*_*erM 4 spring reactive-programming spring-webflux

spring webflux什么时候进行订阅?我到处都读到必须订阅,否则不会发生任何变化。subscribe()在我使用 Spring Webflux 的短暂时间里,我从未在控制器或服务中见过两者。

我的疑问还在于,当使用flatMap()、map()、... 等时,订阅会在什么时候发生?

我所读到的内容并不能真正解决我的疑虑。

public Flux method(){
    ....
    myFlux.flatMap(data -> {
          ....

    }).flatMap(e -> { .... });
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个异步问题,但每个问题flatMap同时运行?...所以有时我注意到的一些数据是空的。

Mar*_*nyi 6

它是框架(spring-webflux)订阅返回的Mono或Flux. 例如,如果您使用Netty(这是默认的),那么根据我的调试,订阅发生在此处: https://github.com/reactor/reactor-netty/blob/db27625064fc78f8374c1ef0af3160ec3ae979f4/reactor-netty-http/src/main/java /reactor/netty/http/server/HttpServer.java#L962

另外,本文可能有助于理解以下情况时发生的情况: https ://spring.io/blog/2019/03/06/flight-of-the-flux-1- assembly-vs-subscription

  • 框架进行一个订阅,然后该订阅将在整个链中传播,直到到达源。之后,源通过操作符链依次向下传播 onNext、onComplete(或 onError)信号。 (2认同)