首页 > 解决方案 > Springboot中Flyway时的Java API调用

问题描述

我有 2 个微服务(ms-one 和 ms-two)

ms-one中,我使用 flyway 实现了数据库迁移。它正在按预期工作。即:在应用程序启动时,我所有新添加的 SQL 脚本都会被触发,并使相关的数据库保持最新。此外,该数据库中有一个表(权限),它有 2 列类似于 ms-2 权限表。

例子: permission (id, permission_name, service_id, has_access, is_new)

ms-two中,我有一个插入 API,它在 ms-two 权限表中插入记录。此权限表中的记录类似于 ms-one 权限表中的记录(几列)。

例子: permission (id, permission_name)

现在,我的任务是,在服务器启动时,我应该检查 ms-one 权限表中是否有任何新条目,如果是,则使用INSERT API 在 ms-2 权限表中插入这些 ID 和 NAME。我有一个专栏,我可以知道权限是否是新的,但想知道是否可以在 flyway 中调用不同微服务的 API(在我的情况下,我想调用 ms-two INSERT API 以获得权​​限) .

标签: javaspringspring-bootmicroservicesflyway

解决方案


正如@FaltFe 所说,Flyway 在迁移的生命周期中暴露了一系列事件;您可能希望将回调挂接到afterMigrate(在迁移结束时发生)或afterEachMigrate(在每个脚本结束时发生)。

如果您打算调用另一个 API,用 Java 而不是 SQL 编写回调可能更容易 - 这里有示例:https ://flywaydb.org/documentation/usage/api/hooks#callsbacks


推荐阅读