使用Spring Boot的数据库事件监听器

时间:2018-06-30 15:00:07

标签: spring spring-boot spring-data-jpa spring-data-mongodb

我需要在数据库中的表上附加一个侦听器 一旦在表中执行了CRUD操作(前监听器和后监听器),则应调用spring boot方法 该条目可以来自任何来源 我如何在春季靴中做到这一点?

2 个答案:

答案 0 :(得分:0)

This article说明了如何从DB-Trigger调用任何程序。

因此,您可以仅创建一个Spring Boot Java应用程序并对该应用程序进行sys调用。

Oracle和其他DB中也提供类似的机制。

答案 1 :(得分:0)

如果实体可以从任何来源创建-例如手动插入-这超出了您正在运行的应用程序的范围和上下文。

您所描述的称为CDC (change data capture)模式。

在这种情况下,要实现CDC,您需要使用基础数据库的工具-例如触发器。

正如我看到的那样,它被MongoDb标记了-触发器不是选项,因为mongodb不支持触发器。

如果您使用的是MongoDb v3.6 +,则可以利用新的Change Streams功能。这是Java的official example

  

Change streams允许应用程序访问实时数据更改   而不会有拖延oplog的复杂性和风险。应用程序可以   使用变更流来订阅一次的所有数据变更   集合,数据库或整个部署,并立即做出反应   给他们。由于变更流使用汇总框架,   应用程序还可以过滤特定更改或转换   通知。

如果您使用的是MongoDb的早期版本,则可以监视oplog或将tailable cursors与带有上限的集合一起使用。