下面我以会员模块调用优惠模快服务 以获取优惠券 举例
1.在被调用方controller里写个demo方法方便被调用
2.在调用方引入openfeign的依赖
3.调用方创建一个文件夹feign专门用于远程调用
创建一个接口
添加@FeignClient("gulimall-coupon") 注解,括号内为被调用方应用名称
添加一个抽象方法,方法签名必须与被调用方那个方法一致,添加注解 @RequestMapping("/coupon/coupon/member/list") 括号内为被调用方方法的路径
4. 编写调用方法
5.启动类添加注解启动feign开关 括号内为前面创建文件夹路径
6.启动nacos,并启动上面两个服务
可以看到服务已经注册进来
7. 请求调用,可以看到远程服务调用成功
后面再次整这项目时有版本适配问题引起的报错
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
解决方式如下
使用版本
<spring.boot.version>2.4.1</spring.boot.version>
<spring.cloud.version>2020.0.1</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>
修改nacos弃用ribbon
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!-- 使用spring loadbalancer,弃用ribbon -->
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>