【问题标题】:Java API call while Flyway in SpringbootSpring Boot 中 Flyway 时的 Java API 调用
【发布时间】:2021-05-08 10:25:20
【问题描述】:

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

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

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

ms-two 中,我有一个插入 API,可以在 ms-two 权限表中插入记录。此权限表中的记录与 ms-one 权限表中的记录(少列)类似。

例子: permission (id, permission_name)

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

【问题讨论】:

  • 我不确定 Flyway 是否可以处理这个问题,但是 Flyway 会触发一些事件和回调。您可以尝试捕获这些事件并在飞行路径执行之前或之后手动运行插入语句到 ms_two。老实说,到目前为止我还没有自己尝试过。

标签: java spring spring-boot microservices flyway


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 2015-04-13
    • 2017-09-15
    • 2019-04-19
    • 2015-05-29
    • 2017-10-11
    • 2016-07-03
    • 2018-09-23
    • 2020-03-15
    相关资源
    最近更新 更多