R2DBC-它如何在现实中工作?

问题描述

我已经开始学习反应式范例,所以我在这个话题上很新。 我创建了一个示例应用程序,该应用程序使用Spring R2DBC连接到Postgresql DB。

我创建了一个Rest Controller,用于在DB中提取和保存数据,以更好地理解概念。

我希望满足以下情况:

  1. 我正在从反应式存储库类中运行findById查询,以查找id(DB中尚不存在)。我正在订阅返回的Mono对象
  2. 我正在保存ID为(1)的实体
  3. 来自(1)的查询一直在侦听数据库中的更改并立即找到添加的实体

不幸的是,它不能以这种方式工作。基本上,第(3)点永远不会发生,我需要手动从(1)触发查询以再次击中数据库

我的问题是-我是在做错什么还是不正确地理解反应式数据库概念?

我觉得这里需要一些解释。非常感谢您在此问题上的帮助。

解决方法

一般来说,我认为http连接和数据库连接将在执行完成后释放连接。

但是对于这里的案例列表,在Spring Reactive堆栈中实现并不难。

我已经使用可尾的Mongo文档创建了一些示例。

对于R2dbc,您可以使用SinksProcessors重播负载(保存时)并发送到客户端check this branch

您还可以利用Postgres Notificaiton来实现类似的功能,请选中this question