发布于2021-05-29 20:51 阅读(644) 评论(0) 点赞(17) 收藏(2)
feign是依赖注册中心调用的其他服务。
如果A服务调用B服务,A就是在注册中心找B服务,找到了才知道地址,才能调用接口。(也可以不用注册中心访问到B服务,需要在@feignclient的注解后面配置url,下面第四大点详细讲)
配置中心
注册中心
服务A:学生服务
服务B:课程成绩服务
下面我们要实现:
服务A:学生服务
调用 服务B:课程服务
的接口
A服务是调用端,需要引入依赖
B服务是被调用端,可以不用引依赖
在引入依赖的时候发现,两个依赖:spring-cloud-starter-feign和spring-cloud-starter-openfeign,这里推荐使用openfeign。
下面是他俩的区别
openfeign 是 spring cloud 在 feign 的基础上支持 spring mvc注解 ,如 @RequestMapping 等等,OpenFeign 的@FeignClient 可以解析Spring MVC 的 @RequestMapping注解下的接口,并通过动态代理的方式生产实现类 ,实现类中做负载均衡并且 低耦合调用其他服务。
推荐使用openfeign
引入依赖
<!--feign客户端(调用端)-->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
这里没有写版本,是因为父工程引入了spring-cloud-dependencies依赖声明
接口FCourseService(习惯性大写F开头,表示这是Feign远程调用接口)
注解:@EnableFeignClients
在需要使用的地方:
1、@Autowired注入FCourseService
2、使用fCourseService接口方法
到这里,远程调用环境全部准备好了。
启动A服务、B服务、注册中心、配置中心。
打开浏览器:http://localhost:8011/student/selectAllCourse
(我的A服务(学生服务)是运行在8011端口)
得到结果:
feign远程调用成功!!!!
报错显示:Load balancer does not have available server for client: course-service(找不到服务)
只需要在远程调用接口的@FeignClient后面的括号里面加上属性url就可以了:
@FeignClient(name = “course-service”,url = “http://localhost:8011/”)
作者:天花灯
链接:http://www.javaheidong.com/blog/article/207341/39a11b047d0e0af425e8/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!