说明:
使用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远程调用支持@EnableFeignClientspublic 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 {@Autowiredprivate 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直播教学刷题来啦




