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

R2DBC - how it works in reality?

我已经开始学习 Reactive 范式,所以我对这个话题还很陌生。 我创建了一个示例应用程序,它使用 Spring R2DBC 连接到 PostgreSQL 数据库。

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

我预计会遇到以下情况:

  1. 我 运行 从反应性存储库中进行 findById 查询 class 寻找 id,它在数据库中尚不存在。我正在订阅返回的 Mono 对象
  2. 我正在保存具有在 (1) 中查询的 ID 的实体
  3. 来自 (1) 的查询不断侦听数据库中的变化并立即找到添加的实体

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

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

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

一般来说,我觉得http连接和数据库连接执行完后会释放连接。

但是对于您在这里列出的案例,在 Spring 反应堆中实施并不困难。

我使用可标记的 Mongo 文档创建了一些示例。

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

你也可以使用 Postgres Notificaiton 来实现类似的功能,查看 this question