Spring Cloud Contract - 是消费者驱动的吗?

我刚开始为我们的微服务设置使用消费者驱动的合同,因为它们主要是 Spring Boot 应用程序,自然选择 Spring Cloud Contract。但随之而来的是混乱。在文档中的所有示例中,合同都是在生产者端定义的,消费者从 maven repo 中检索它们。如果生产者定义它们,它如何被消费者驱动?

我的理解是,从概念上讲,消费者将它们定义为生产者对其使用的部分 API 的期望。除了前面的问题,Spring Cloud Contract 是否可以在消费者端定义合约并在生产者端进行验证?


拉丁的传说
浏览 97回答 1
1回答

哈士奇WWW

感谢这个问题。是的,Spring Cloud Contract 可以是消费者驱动的,也可以是生产者驱动的。合同定义可以放在生产者那里,也可以放在外部存储库中。消费者驱动的概念与存储合约的事实无关。这与创建合同的人或实际推动合同变更的人有关。另一件事是每个消费者是否可以定义一套自己的需求。这意味着一个消费者可能有与另一个消费者不同的需求。因此,在生产者驱动方法的 Spring Cloud Contract 中,生产者只是创建合同,并不真正关心不同的消费者是否以不同的方式使用他们的 API。API 的生产者为所有消费者创建了例如 1 个合同定义,而与该合同保持一致是消费者的问题。使用 Spring Cloud Contract 的消费者驱动合同,是消费者提出更改建议并创建合同定义。消费者将 PR 发送到生产者团队的仓库或存储所有合约定义的单独仓库。做这件事的不是生产者,而是消费者。与此同时,消费者可以在不征得生产者许可的情况下在本地创建存根,并对 API 进行原型设计。一旦消费者完成了它的工作并且当然之前与生产者团队讨论了更改,那么可以发送带有建议更改的拉取请求。要记住的重要一点是,每个消费者都有自己的文件夹和他们的要求。例如,如果有消费者example1,并且example2有生产者,producer1那么在producer1合约文件夹会有2个文件夹,一个example1和第二个example2。两者都包含对特定消费者的期望。然后生产者接管 PR 并在生产者端进行验证。生成测试。一旦实现被编写并且测试通过,就可以上传存根。最后,在消费者端,消费者可以切换到开始获取上传的存根,以始终获得最新版本的存根。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java