【问题标题】:How to invoke a method in spring boot, when table gets updated in mysql当表在mysql中更新时如何在spring boot中调用方法
【发布时间】:2018-11-27 12:32:40
【问题描述】:

我的查询是,当在 MySQL DB 中更新表时,如何在 spring boot 项目中调用方法。

案例 1:假设我有一个与两个应用程序共享的 Mysql Db,并且任何特定的表都经常更新。

所以,我的问题是如何通知另一个应用程序(Spring-boot)以了解该更新,以便它可以处理该数据。 注意我不想使用调度器。

谢谢,

【问题讨论】:

  • 您可以保留一个日志表并使用与每个表关联的 mysql 触发器更新该日志表。从 Spring Boot 应用程序中频繁使用线程检查日志表或使用任何推送消息机制。
  • @SumeshTG 有参考吗?
  • 您在项目中使用哪种 jdbc 访问权限?你在使用普通的 jdbc、jpa、spring-repositories 吗?
  • @bilak 我正在使用 JPA
  • @PawanTiwari 您可以参考 mysql 触发器、事件和 Spring Boot 事件 https://docs.spring.io/spring-data/rest/docs/current/reference/html/#events

标签: java mysql spring-boot


【解决方案1】:

可能有许多解决方案,具体取决于您使用的技术。如果您使用的是 Spring-data,那么您可以使用 events 并从事件处理程序中通知其他应用程序(您可以使用 rest 集成、amqp、...)

【讨论】:

  • 我明白你的意思,但我无法控制另一个写入表的应用程序。我只能访问数据库。所以无论我想做什么,我都必须用数据库和我自己的应用程序级别来管理它。我正在考虑使用 MySQL 事件,但我还不知道它是否可行。有什么建议吗?
  • 我不知道mysql事件,对不起。但是,如果您无权访问第二个应用程序,那么它将变得“未通知”有关更改。也许在这里什么都帮不了你。
  • 感谢您的努力。欣赏。
【解决方案2】:

此问题与Springboot 或任何其他应用程序无关。

这里的问题是两个应用程序(Web 或非 Web)应该如何相互通信。

关于通信,看需求,是同步通信还是异步通信。

如果其同步通信,您可以使用 Rest Template 或任何其他,但如果其他应用程序作为服务运行,它会阻止当前请求。

如果它的异步通信(你不想等待结果并且客户端没有被阻塞),你使用像Kafka,ActiveMq这样的消息代理

我认为您可以使用spring boot应用程序的异步调用功能,但是如果请求失败,您应该考虑什么?

【讨论】:

  • @pawan,如果我的理解有误,请让我理解。更新是如何以 dB 为单位的,是手动还是某些应用程序或程序在 db 中进行更新,如果是,那是什么类型的应用程序?而且8肯定可以肯定第二个应用是spring boot应用..
猜你喜欢
  • 1970-01-01
  • 2022-08-21
  • 2021-01-13
  • 1970-01-01
  • 2021-08-30
  • 2020-02-05
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多