首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当从ReactiveMongo存储库返回Mono时,数据库调用是否从后台开始?

问当从ReactiveMongo存储库返回Mono时,数据库调用是否从后台开始?
EN

Stack Overflow用户
提问于 2021-08-18 12:09:18
回答 2查看 119关注 0票数 0

我是Spring的新手,我想知道当Mono从ReactiveMongo存储库返回时会发生什么。

数据库调用在返回后立即开始吗?

例如:

代码语言:javascript
复制
public void serviceMethod() {
   var mono = reactiveMongoRepo.findItemById("123");
}

当返回数据库调用时,是立即启动数据库调用,还是将数据库调用立即启动,还是必须将subscrisbe 放到 Mono 中才能启动数据库调用?

引擎盖下面到底发生了什么?

EN

回答 2

Stack Overflow用户

发布于 2021-08-18 20:28:48

当您声明您的反应性代码时,它就是一个声明。你基本上是在描述当某人subscribes时你想让你的流看起来像什么。这在反应堆术语中被称为assembly time。

当某人实际订阅(例如外部客户端)时,我们输入所谓的subscription time。订阅者触发向流传播的信号,其目的是查找publisher。

subscriber基本上是在反向问(上游),“你是出版商吗?”该链可能回答“否”,然后信号将再次传播到链上(上游),询问“您是出版商吗?”直到它找到一个。例如,一个数据库调用,或者一个Flux,或者一个Mono等等。

当它从那里找到一个publisher时,我们就在execution time。数据将开始流经管道(按更自然的自上而下顺序,或上游到下游)。

您可以在由反应堆开发人员通量的飞行编写的博客系列西蒙·巴斯莱中阅读更多关于它的内容,这是一个很好的阅读,可以更多地了解反应堆库的内部工作。

票数 2
EN

Stack Overflow用户

发布于 2021-08-18 12:30:54

不是的。直到您,或者更有可能在使用Spring时,框架才会发生任何事情--框架订阅了这个链。

https://projectreactor.io/docs/core/release/reference/#reactive.subscribe

在反应堆中,当您编写发布者链时,默认情况下数据不会开始泵入其中。相反,您可以创建异步过程的抽象描述(这可以帮助实现可重用性和组合)。通过订阅,您可以将发布服务器绑定到订阅服务器,从而触发整个链中的数据流。这在内部是通过来自上游传播的订阅者的单个请求信号实现的,这些信号一直传播到源发布服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68832106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档