網上教程不少,有些就是復制粘貼,不結合實際生產。
eureka不再闡述。
一般正常開發會有多個工程,且多個module。
我的習慣是:
eureka server、權限、config、gateway 這類插件放在一個工程 --- Server
其它實際業務 --- Client
Client中會存在於多個module,這些模塊都是單獨的服務,為了服務之間可以互相調用,因此 “接口”是必須單獨一個module,打包被其它模塊所引用。
api模塊僅僅是其它模塊希望開放出來的接口
其它兩個正常理解為業務模塊即可。
具體的實現,閱其名知其意,就是Login模塊所想要開放給其它服務的,並且Login模塊會正常實現該接口(MVC正常實現,不貼圖了)。
其它服務通過Feign調用的接口,ServiceId就是服務提供者的spring.application.name:
下圖是Login作為服務提供者的eureka配置:
消費者調用:
EnableFeignClients,如果是模塊、接口拆分的形式,這里面必須填入接口包名,否則根本無法注入所希望調用的遠程接口。
這就是api形式的feign遠程調用,別告訴我你的服務都在一個模塊,那還用個毛的微服務。
還有一種方式就是自己封裝一個http模塊,都通過該模塊進行遠程調用,那就沒feign啥事了,但需要單獨引入ribbon或者nginx。