之前已经创建好了用户,订单,商品微服务,这三个微服务是互相隔离的,那么微服务和微服务之间如何互相调用呢,显然三个微服务都可以采用http通信,也就是restTemplate进行互相访问,但是这种方式对参数传递和使用都不是很方便,所以弃用此方式,采用feign进行服务之间的调用,可以简化调用流程,真正感觉到是在同一个项目中调用另一个类的方法的欢快感。
feign的使用也很简单,只需要添加一个依赖即可,这里用户,订单和商品微服务都属于基础微服务,所以在创建一个个人中心当作业务微服务来查询某用户下面的订单列表。
对于个人中心微服务的创建方式和之前的文章是一样的,这里不再详细说了。
目录
1、在个人中心微服务中引入feign的依赖支持
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--服务客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- feign --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies>
2、创建三个包controller,dto,service

3、创建订单和用户dto
订单dto,这里省略了get、set

用户dto,这里省略了get、set

4、创建订单和用户业务接口


5、创建查询用户订单列表的接口,查询用户信息和该用户下的订单信息
在订单微服务中添加一个通过用户名查询订单列表的查询


在个人中心微服务中创建查询接口,用于用户和订单信息的合并展示,这里也是最终展示给用户看的接口

6、修改网关配置文件,加入个人中心路由映射

7、修改用户和订单微服务的controller,去掉访问网址前缀


8、除了商品启动其他的微服务

9、使用postman进行个人中心接口的测试

10、文章源码地址
码云:https://gitee.com/apgblogs/springCloudStudy/tree/feign/
现在就已经实现了微服务的互相调用,是不是很简单,而且调用也很优雅,像这种一个接口需要调用多个微服务并返回一个结果的方式也可以使用微服务聚合的方式处理,这样可以降低服务之间调用的网络开销,后期也会详细介绍一下。
1 条评论