亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Cloud Contract - 是消費者驅動的嗎?

Spring Cloud Contract - 是消費者驅動的嗎?

拉丁的傳說 2023-05-10 15:05:46
我剛開始為我們的微服務設置使用消費者驅動的合同,因為它們主要是 Spring Boot 應用程序,自然選擇 Spring Cloud Contract。但隨之而來的是混亂。在文檔中的所有示例中,合同都是在生產者端定義的,消費者從 maven repo 中檢索它們。如果生產者定義它們,它如何被消費者驅動?我的理解是,從概念上講,消費者將它們定義為生產者對其使用的部分 API 的期望。除了前面的問題,Spring Cloud Contract 是否可以在消費者端定義合約并在生產者端進行驗證?
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

感謝這個問題。是的,Spring Cloud Contract 可以是消費者驅動的,也可以是生產者驅動的。

合同定義可以放在生產者那里,也可以放在外部存儲庫中。消費者驅動的概念與存儲合約的事實無關。這與創建合同的人或實際推動合同變更的人有關。另一件事是每個消費者是否可以定義一套自己的需求。這意味著一個消費者可能有與另一個消費者不同的需求。

因此,在生產者驅動方法的 Spring Cloud Contract 中,生產者只是創建合同,并不真正關心不同的消費者是否以不同的方式使用他們的 API。API 的生產者為所有消費者創建了例如 1 個合同定義,而與該合同保持一致是消費者的問題。

使用 Spring Cloud Contract 的消費者驅動合同,是消費者提出更改建議并創建合同定義。消費者將 PR 發送到生產者團隊的倉庫或存儲所有合約定義的單獨倉庫。做這件事的不是生產者,而是消費者。與此同時,消費者可以在不征得生產者許可的情況下在本地創建存根,并對 API 進行原型設計。一旦消費者完成了它的工作并且當然之前與生產者團隊討論了更改,那么可以發送帶有建議更改的拉取請求。要記住的重要一點是,每個消費者都有自己的文件夾和他們的要求。例如,如果有消費者example1,并且example2有生產者,producer1那么在producer1合約文件夾會有2個文件夾,一個example1和第二個example2。兩者都包含對特定消費者的期望。

然后生產者接管 PR 并在生產者端進行驗證。生成測試。一旦實現被編寫并且測試通過,就可以上傳存根。

最后,在消費者端,消費者可以切換到開始獲取上傳的存根,以始終獲得最新版本的存根。

查看完整回答
反對 回復 2023-05-10
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號