0

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

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

我预计会遇到以下情况:

  1. 我正在从响应式存储库类运行 findById 查询以查找 ID,该 ID 在 DB 中尚不存在。我订阅了返回的 Mono 对象
  2. 我正在保存具有在 (1) 中查询的 id 的实体
  3. 来自 (1) 的查询不断监听 DB 中的变化并立即找到添加的实体

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

我的问题是 - 我做错了什么或错误地理解了反应式数据库概念?

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

4

1 回答 1

1

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

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

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

对于 R2dbc,您可以使用SinksProcessors重放有效负载(保存时)并发送到客户端,请检查此分支

你也可以利用 Postgres Notificaiton 来实现类似的功能,检查这个问题

于 2020-09-30T13:28:16.527 回答