问题描述
我已经开始学习反应式范例,所以我在这个话题上很新。 我创建了一个示例应用程序,该应用程序使用Spring R2DBC连接到Postgresql DB。
我创建了一个Rest Controller,用于在DB中提取和保存数据,以更好地理解概念。
我希望满足以下情况:
- 我正在从反应式存储库类中运行findById查询,以查找id(DB中尚不存在)。我正在订阅返回的Mono对象
- 我正在保存ID为(1)的实体
- 来自(1)的查询一直在侦听数据库中的更改并立即找到添加的实体
不幸的是,它不能以这种方式工作。基本上,第(3)点永远不会发生,我需要手动从(1)触发查询以再次击中数据库。
我的问题是-我是在做错什么还是不正确地理解反应式数据库概念?
我觉得这里需要一些解释。非常感谢您在此问题上的帮助。
解决方法
一般来说,我认为http连接和数据库连接将在执行完成后释放连接。
但是对于这里的案例列表,在Spring Reactive堆栈中实现并不难。
我已经使用可尾的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。