我有两个共享相同数据库架构的SpringBoot微服务的情况。该模式由liquibase changelog文件维护。一个服务从数据库读取,而另一服务负责写入数据库。
正确,Writing Service拥有liquibase changelog文件,这意味着Writing Service拥有架构。我验证Reading Service的方式是先将Writeing服务部署到测试环境中,然后再部署到Reading Service,然后再针对Reading Service执行端到端测试。
两种服务(两个单独的应用程序,两个单独的存储库)是否可以共享liquibase更改日志文件?我觉得这类似于合同测试,因为changelog文件将是这两种服务的合同,但是不确定Liquibase,Spring,Pact等提供的支持此想法的东西。
感谢您的时间!
我认为这不算是合法的答案,但是我想到了两个解决方案:
因为您的第二项服务从数据库读取,所以我想您那里有一整套实体,并且这些实体应该与您的数据库架构匹配。并且由于您正在使用Spring,所以我想您可以将spring.jpa.hibernate.ddl-auto=validate
添加到application.properties
文件中。这将针对实体验证您的数据库架构。
您可以创建一个单独的库,其中将包含所有changeLogs。之后,您可以将此库同时包含在两个服务中,因此liquibase将验证在应用程序部署期间是否执行了所有changeSet。但是,您应该确保所有changeSet都具有preConditions,因此部署不会失败,并且数据库架构中不会有任何重复项。