我是反应式编程这个话题的新手,因此有一些问题。
我正在开发一个小软件。我想借此机会更好地了解响应式编程。
所以我看了一下Spring的项目-reactor。我还使用R2DBC来反应性地访问数据库。
我想知道数据库是否有任何方法来响应变化。
或者更确切地说:如果用户在数据库中保存了一个条目,那么应该通知服务器(例如,RestController)。
我该如何着手做这件事呢?
响应控制器、配置、实体等,我已经实现了。
很抱歉我的拼写错误。
补充:对前端的更新是由服务器发送的事件完成的。
发布于 2019-04-03 15:39:03
基本上,尼克·齐特拉基迪斯提到的。让我在这里补充几件事。
典型的数据库查询模式是查询多条记录。一旦服务器将所有记录发送到您的应用程序,数据库就会用其结果进行响应,并指示查询已完成。如果新记录在查询处于活动状态时或在查询完成后到达,您不会立即看到这些更改,这是因为存在隔离问题,如果查询完成,则不再有对查询的引用。
您正在询问的功能是事件驱动的数据消费。数据库将此功能称为连续查询。一些商店(如MongoDB with Tailable cursors或Postgres Logical Decoding)提供了一些特性,允许保持游标/查询处于打开状态,并且您的客户端能够接收连续的更新。
Kafka和JMS还遵循发送(消息)的想法,这些消息通常由侦听器使用,甚至通过反应式流使用。
因此,这一切都归结为您正在使用的技术。
发布于 2019-04-02 20:35:18
我的理解是,reactor本身不能为您解决这个问题。如果您希望您的应用程序对某些数据库更改做出响应(反应),那么您需要确定是谁进行了此更改,并在那里实现了某种集成。
例如,如果您让Service1
更新数据库,而Service2
需要响应,那么Service1
可以调用Service2
,或者您可以从Service1
发出事件并侦听来自Service2
的事件。
第一种方法更简单,更容易实现,但它有一个缺点,那就是将两个服务结合起来。第二种方法更难实现,但服务是解耦的。
Reactor可以在这两种情况下为您提供帮助:对于事件,reactor可以为您提供一种监听事件的方法。例如使用reactor-rabbitmq模块或reactor-kafka。对于服务到服务的调用,如果您使用Spring Webflux,reactor可以帮助您。
也许您可以告诉我们更多关于您的案例,以便我们提供更具体的解决方案?
https://stackoverflow.com/questions/55461079
复制相似问题