公众号merlinsea
说明:
使用feign整合nacos实现微服务间的远程调用,相比于之前的restTemplate的方式,更加的解耦,可以通过单独抽取出其他微服务的FeignClient作为service层的业务逻辑,然后通过注解注入当前微服务的其他方法中(如controller,service等)使用。
什么是Open-Feign
SpringCloud提供的伪http客户端(本质还是⽤http),封装了Http调⽤流程,更适合⾯向接⼝化编程;让⽤Java接⼝注解的⽅式调⽤Http请求.不⽤像Ribbon中通过封装HTTP请求报⽂的⽅式调⽤; Feign默认集成了Ribbon,即Feign默认有负载均衡策略;nacos默认支持feign远程调用。
1、引入feign依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2、开启feign远程调用支持@EnableFeignClients
@SpringBootApplication //开启服务发现(nacos注册中心) @EnableDiscoveryClient //开启Feign远程调用支持 @EnableFeignClients public class OrderApplication { public static void main(String [] args){ SpringApplication.run(OrderApplication.class,args); } }
3、抽取出Service层的接口逻辑(业务核心)【伪http请求!!!!】
注:当在现在的orderservice中调用这里面的方法时,feign会去nacos注册中心上找id=xdclass-video-service的微服务,然后通过发起http请求访问微服务的方法,而且feign默认集成了ribbon,因此feign本身就有负载均衡策略(基于客户端的负载均衡)
类似于封装了一个远程调用的controller层
/** * 调用VideoService中的方法findById的时候会自动拼装为xdclass-video-service/api/v1/video/find_by_id */ //调用哪个微服务(如果是集群形式,那么会轮询的方式决定调用哪个服务) @FeignClient(value = "xdclass-video-service") public interface VideoService { @GetMapping("/api/v1/video/find_by_id") Video findById(@RequestParam("videoId") int videoId); @PostMapping("/api/v1/video/save") int save(@RequestBody Video video); }
4、controller层通过注入VideoService实现远程调用
@RestController @RequestMapping("api/v1/video_order") public class OrderController { @Autowired private VideoService videoService; @RequestMapping("find_by_id") public Object findById(int videoId){ //通过open-feign调用视频微服务的方法 Video video = videoService.findById(videoId); VideoOrder videoOrder = new VideoOrder(); videoOrder.setVideoId(video.getId()); videoOrder.setVideoTitle(video.getTitle()); videoOrder.setCreateTime(new Date()); videoOrder.setServerInfo(video.getServeInfo()); return videoOrder; } @PostMapping("save") public int save(@RequestBody Video video){ //通过open-feign调用视频微服务的方法 videoService.save(video); return 1; } }
vip课程是指同学们加入我们的vip学习群,vip群里面的小伙们可以永久参加所有的直播算法刷题课程,我每天直播的时间是早上8:30-9:30,通过腾讯会议在线讲解算法刷题,语言包括c++,java和golang版本,只要加入了vip群,除了每天的直播刷题外,前45位加入的同学,我会额外赠送我所有的学习实战资料,包括docker、git、java io、leetcode算法、java源码分析、jdk新特性、kafka、linux、mybatis、mybatis plus、mysql、mysql刷题、netty、nginx、python、rabbitmq、redis、sharding jdbc、spring、springboot、springcloud、并发编程、html+css、微信支付实战所有内容的学习笔记,总共800+张的文档资料。
国庆前的推广活动:
国庆前的价格:800元/人
国庆后恢复原价为1349元/人
国庆前45位加入的同学,带大家看看我们赠送的学习文档【声明只有国庆前45位加入vip学习群的同学,才会赠送这些内容哈】,对于之前已经加入了其他课程的同学,联系我有额外的优惠,我们每天8:30-9:30上直播算法课程:
链接详情
vip课程是指同学们加入我们的vip学习群,vip群里面的小伙们可以永久参加所有的直播算法刷题课程,我每天直播的时间是早上8:30-9:30,通过腾讯会议在线讲解算法刷题,语言包括c++,java和golang版本,只要加入了vip群,除了每天的直播刷题外,前45位加入的同学,我会额外赠送我所有的学习实战资料。
奔跑的小梁,公众号:梁霖编程工具库算法班永久vip直播教学刷题来啦

