首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应式编程如何对数据库更改做出反应?

反应式编程如何对数据库更改做出反应?
EN

Stack Overflow用户
提问于 2019-04-02 02:01:40
回答 2查看 1.1K关注 0票数 1

我是反应式编程这个话题的新手,因此有一些问题。

我正在开发一个小软件。我想借此机会更好地了解响应式编程。

所以我看了一下Spring的项目-reactor。我还使用R2DBC来反应性地访问数据库。

我想知道数据库是否有任何方法来响应变化。

或者更确切地说:如果用户在数据库中保存了一个条目,那么应该通知服务器(例如,RestController)。

我该如何着手做这件事呢?

响应控制器、配置、实体等,我已经实现了。

很抱歉我的拼写错误。

补充:对前端的更新是由服务器发送的事件完成的。

EN

回答 2

Stack Overflow用户

发布于 2019-04-03 15:39:03

基本上,尼克·齐特拉基迪斯提到的。让我在这里补充几件事。

典型的数据库查询模式是查询多条记录。一旦服务器将所有记录发送到您的应用程序,数据库就会用其结果进行响应,并指示查询已完成。如果新记录在查询处于活动状态时或在查询完成后到达,您不会立即看到这些更改,这是因为存在隔离问题,如果查询完成,则不再有对查询的引用。

您正在询问的功能是事件驱动的数据消费。数据库将此功能称为连续查询。一些商店(如MongoDB with Tailable cursorsPostgres Logical Decoding)提供了一些特性,允许保持游标/查询处于打开状态,并且您的客户端能够接收连续的更新。

Kafka和JMS还遵循发送(消息)的想法,这些消息通常由侦听器使用,甚至通过反应式流使用。

因此,这一切都归结为您正在使用的技术。

票数 2
EN

Stack Overflow用户

发布于 2019-04-02 20:35:18

我的理解是,reactor本身不能为您解决这个问题。如果您希望您的应用程序对某些数据库更改做出响应(反应),那么您需要确定是谁进行了此更改,并在那里实现了某种集成。

例如,如果您让Service1更新数据库,而Service2需要响应,那么Service1可以调用Service2,或者您可以从Service1发出事件并侦听来自Service2的事件。

第一种方法更简单,更容易实现,但它有一个缺点,那就是将两个服务结合起来。第二种方法更难实现,但服务是解耦的。

Reactor可以在这两种情况下为您提供帮助:对于事件,reactor可以为您提供一种监听事件的方法。例如使用reactor-rabbitmq模块或reactor-kafka。对于服务到服务的调用,如果您使用Spring Webflux,reactor可以帮助您。

也许您可以告诉我们更多关于您的案例,以便我们提供更具体的解决方案?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55461079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档