R2DBC - 它在现实中是如何工作的?
R2DBC - how it works in reality?
我已经开始学习 Reactive 范式,所以我对这个话题还很陌生。
我创建了一个示例应用程序,它使用 Spring R2DBC 连接到 PostgreSQL 数据库。
我创建了一个 Rest Controller,用于在 DB 中获取和保存数据,以更好地理解一个概念。
我预计会遇到以下情况:
- 我 运行 从反应性存储库中进行 findById 查询 class 寻找 id,它在数据库中尚不存在。我正在订阅返回的 Mono 对象
- 我正在保存具有在 (1) 中查询的 ID 的实体
- 来自 (1) 的查询不断侦听数据库中的变化并立即找到添加的实体
不幸的是,它不能以这种方式工作。基本上第 (3) 点永远不会发生,我需要手动从 (1) 触发查询以再次访问数据库。
我的问题是 - 我是做错了什么还是对反应式数据库的概念理解不正确?
我觉得,这里需要一些解释。非常感谢您在这个问题上的帮助。
一般来说,我觉得http连接和数据库连接执行完后会释放连接。
但是对于您在这里列出的案例,在 Spring 反应堆中实施并不困难。
我使用可标记的 Mongo 文档创建了一些示例。
- Angular, Server Sent Events with @Taiable document
- Angular, WebSocket with @Taiable document
- Angular, RSocket with @Taiable document
对于R2dbc,您可以使用Sinks
或Processors
重播有效载荷(保存时)并发送给客户端,check this branch。
你也可以使用 Postgres Notificaiton 来实现类似的功能,查看 this question。
我已经开始学习 Reactive 范式,所以我对这个话题还很陌生。 我创建了一个示例应用程序,它使用 Spring R2DBC 连接到 PostgreSQL 数据库。
我创建了一个 Rest Controller,用于在 DB 中获取和保存数据,以更好地理解一个概念。
我预计会遇到以下情况:
- 我 运行 从反应性存储库中进行 findById 查询 class 寻找 id,它在数据库中尚不存在。我正在订阅返回的 Mono 对象
- 我正在保存具有在 (1) 中查询的 ID 的实体
- 来自 (1) 的查询不断侦听数据库中的变化并立即找到添加的实体
不幸的是,它不能以这种方式工作。基本上第 (3) 点永远不会发生,我需要手动从 (1) 触发查询以再次访问数据库。
我的问题是 - 我是做错了什么还是对反应式数据库的概念理解不正确?
我觉得,这里需要一些解释。非常感谢您在这个问题上的帮助。
一般来说,我觉得http连接和数据库连接执行完后会释放连接。
但是对于您在这里列出的案例,在 Spring 反应堆中实施并不困难。
我使用可标记的 Mongo 文档创建了一些示例。
- Angular, Server Sent Events with @Taiable document
- Angular, WebSocket with @Taiable document
- Angular, RSocket with @Taiable document
对于R2dbc,您可以使用Sinks
或Processors
重播有效载荷(保存时)并发送给客户端,check this branch。
你也可以使用 Postgres Notificaiton 来实现类似的功能,查看 this question。