当前位置: 首页 > 知识库问答 >
问题:

订阅在什么时候进行?(Springwebflux)

秦珂
2023-03-14

在什么情况下Spring webflow会进行订阅?我在任何地方都读到必须有订阅,否则不会发生任何更改。在我使用Spring Webflow的短暂时间里,我从未在控制器或服务中见过订阅()

我的疑问还在于,在使用flatMap时,。。。等订阅在什么时候进行?

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

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

    }).flatMap(e -> { .... });
}

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

共有3个答案

史骏
2023-03-14

答案是:视情况而定。

例如,如果这是一个Spring控制器方法,那么是框架本身订阅了Mono或Flux。

如果它是由调度程序不时触发的方法,那么您必须显式订阅MonoFlux,否则将不会进行任何处理。

这意味着,如果您的应用程序只公开REST API,并且不需要以任何其他方式触发处理,那么您很可能永远不需要显式订阅Mono或Flux,因为Spring将由您来处理。

毕宇
2023-03-14

您需要调用一个。在flatmap之后使用subscribe()或block()函数。这里有一个例子。

假设myFlux是Flux类型,下面将根据上面的示例执行订阅。订阅(System.out::println)

这是对单独的StackOverflow线程的解释。

但是在您的方法函数中,您返回的是一个流量对象,因此它想如何订阅流量取决于方法()函数的使用者。你不应该试图从内部订阅流量

东明德
2023-03-14

订阅返回的MonoFlux的是框架(spring-webflow)。例如,如果您使用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

 类似资料:
  • 假设你有一些焊剂和monos 从WebFlux控制器返回一个单声道 在应用程序中,将通量和单声道分别解析为List和Int的合适位置在哪里?您只是阻止()所有内容吗?有没有办法获得解决所有问题的框架? 编辑:我想我的主要困惑是,我看到的所有教程中,响应对象内的字段实际上都不是反应性的,所以似乎我需要在从控制器返回对象之前解决所有问题。如果响应对象看起来像这样,我会觉得更有意义

  • 1.使用者角度 为企业、组织或个人提供一种信息传播方式,用对口的内容达成企业、组织与成员之间的沟通和知识传播。体现在为用户提供内容服务,传达各类资讯,用户订阅后,可在轻推客户端定期接收到内容资讯的推送 2.开发者角度 主要通过会话的形式为用户提供服务,用户在协同界面点击订阅号图标后,可直接进入与订阅号的聊天界面,开发难度低,支持在后台定制菜单,通过菜单引导用户到不同的去处。通知消息会被折叠在订阅消

  • 我在理解promise方面有一个(看似基本的)问题。首先是代码: 每个promise函数在添加到promise数组时被调用,而不是像我所想的那样调用Q.all。 我有什么不明白的? 如何在不立即调用所述promise的情况下将一系列promise排队?

  • 本文向大家介绍什么时候用delegate,什么时候用Notification?相关面试题,主要包含被问及什么时候用delegate,什么时候用Notification?时的应答技巧和注意事项,需要的朋友参考一下 答:delegate针对one-to-one关系,并且reciever可以返回值 给sender,notification 可以针对one-to-one/many/none,recieve

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 根据这个线程,conCatMap和flatmap只在项目的发出顺序上有所不同。所以我做了一个测试,创建了一个简单的整数流,并想看看它们将以什么顺序发出。我做了一个小的可观测值,它可以接收1-5之间的数字,然后乘以2。容易的 这是带有平面图的代码: 和使用concatMap的完全相同的代码: 当我在日志中看到打印出来的时候,两者的顺序都是一样的,为什么?我以为只有concatMap才能维持秩序?