【问题标题】:Database event listener using spring boot使用 Spring Boot 的数据库事件监听器
【发布时间】:2018-06-30 15:00:06
【问题描述】:

我需要将监听器附加到 db 中的表 一旦在表中执行了 CRUD 操作(前监听器和后监听器),它应该调用一个 spring boot 方法 条目可以来自任何来源 我如何在 Spring Boot 中做到这一点?

【问题讨论】:

  • 我不认为弹簧靴会给你这种力量。您可以从 JPA 实体中获取此类行为。你需要换个地方看看!

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


【解决方案1】:

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

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

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

我看到这是用 MongoDb 标记的 - 触发器不是一个选项,因为 mongodb 不支持触​​发器。

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

Change streams 允许应用程序访问实时数据更改 没有跟踪oplog 的复杂性和风险。应用程序可以 使用更改流订阅单个数据的所有更改 集合、数据库或整个部署,并立即做出反应 给他们。因为变更流使用聚合框架, 应用程序还可以过滤特定更改或转换 随意通知。

如果您使用的是早期版本的 MongoDb,您可以监控 oplog 或使用带有上限集合的 tailable cursors

另一种方法是研究第 3 方解决方案,将数据库中发生的所有事情都转换为事件流 - 例如 debezium

【讨论】:

    【解决方案2】:

    This article 解释了如何从 DB-Trigger 调用任何程序。

    因此,您只需创建一个 Spring Boot java 应用程序并对您的应用程序进行 sys 调用。

    Oracle 和其他数据库中也有类似的机制。

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 2015-06-02
      • 2019-03-10
      • 2011-04-24
      • 2018-08-22
      • 1970-01-01
      • 2015-04-18
      • 2021-10-15
      • 2018-08-14
      相关资源
      最近更新 更多