我正在使用 Mongock 使用 Spring-Boot 迁移和初始化我的 MongoDB 数据库。我需要的是一种检查何时应用所有变更日志的方法。
如何检查 Mongock 是否完成了所有的变更日志/变更集?
我发现 Mongock 创建了一个集合mongockLock,其中在迁移运行时有一个条目。
检查上述集合中是否缺少任何文档就足以得出 Mongock 已完成更改日志的结论吗?
如何查询此集合中的文档?
我正在使用 Mongock 使用 Spring-Boot 迁移和初始化我的 MongoDB 数据库。我需要的是一种检查何时应用所有变更日志的方法。
如何检查 Mongock 是否完成了所有的变更日志/变更集?
我发现 Mongock 创建了一个集合mongockLock,其中在迁移运行时有一个条目。
检查上述集合中是否缺少任何文档就足以得出 Mongock 已完成更改日志的结论吗?
如何查询此集合中的文档?
使用 Spring Boot,有两种使用 Mongock 的方法,如Mongock 的文档所示:
通过属性,使用@EnableMongock
mongock:
runner-type: InitializingBean
使用构建器方法
@Bean
public MongockInitializingBeanRunner mongockInitializingBeanRunner(
ApplicationContext springContext,
MongoTemplate mongoTemplate){
return MongockSpring5.builder()
.setDriver(SpringDataMongo3Driver.withDefaultLock(mongoTemplate))
.addChangeLogsScanPackage("your_changeLog_package_path")
.setSpringContext(springContext)
.buildInitializingBeanRunner();
}
首先,mongockLock
集合只是分布式悲观锁的集合。这是 Mongock 用来确保 changeLog 一次仅由一个实例运行的机制。如果成功,只需一次(除非标志 runAlways 为真,在这种情况下显然每次都会运行)。
所以 mongockLock 不是你要找的
有 3 种方法可以检查迁移是否成功运行。
failFast
任何 ChangeSet 中的默认值,如果任何 changeLogs 失败,Mongock runner将抛出异常