「 从0到1学习微服务SpringCloud 」05服务消费者Fegin
系列文章(更新ing):
「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现
「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制
「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate
Fegin简介
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
准备工作
继续用上节的工程, 启动eureka-server,端口为8761;启动service-hi 两次,端口分别为8762 、8863
简单使用
继续使用上节的eureka-client工程
1.加入Fegin依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在启动类加上@EnableFeignClients注解,开启Feign的功能
@SpringBootApplication
@EnableEurekaClient
//加下面这个
@EnableFeignClients
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}
3.定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务
比如在代码中调用了service-hi服务的“/hi”接口,代码如下:
@FeignClient("service-hi")
public interface FeginClient {
//service-hi服务中名字为"hi"的接口
@GetMapping("hi")
String sayHi();
}
4.在controller层,对外暴露一个"hiFromFegin"的API接口,通过上面定义的Feign客户端sayHi 来消费服务
//编译器报错,无视。
//因为这个Bean是在程序启动的时候注入的,编译器感知不到,所以报错。
@Autowired
private FeginClient feginClient;
@GetMapping("hiFromFegin")
public String hiFromFegin() {
return feginClient.sayHi();
}
5.启动程序,多次访问http://localhost:8861/hiFromFegin,浏览器交替显示
hi!i am come from 8862hi!
i am come from 8863
至此,使用Feign消费服务已实现,Feign内置ribbon,带负载均衡的效果
Feign的优势(相比RestTemplate)
1.声明式的REST客户端,通过编写简单的接口和插入注解,只需要像调用本地方法一样调用它就可以完成服务请求及相关处理,使REST调用更加简单
若使用RestTemplate,则需要深入了解HTTP级别API的细节。
2.内置Ribbon,配合Eureka实现负载均衡
如果觉得不错,分享给你的朋友!
THANDKS
- End -
一个立志成大腿而每天努力奋斗的年轻人
伴学习伴成长,成长之路你并不孤单!
「 从0到1学习微服务SpringCloud 」05服务消费者Fegin的更多相关文章
- 「 从0到1学习微服务SpringCloud 」10 服务网关Zuul
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...
- 「 从0到1学习微服务SpringCloud 」09 补充篇-maven父子模块项目
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...
- 「 从0到1学习微服务SpringCloud 」08 构建消息驱动微服务的框架 Spring Cloud Stream
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」07 RabbitMq的基本使用
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- 「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 Eureka的高可用需要 ...
- 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! Spring Cloud Eureka 基于Netflix Eureka做了二次封装(Spring Clo ...
- 「 从0到1学习微服务SpringCloud 」01 一起来学呀!
有想学微服务的小伙伴没?一起来从0开始学习微服务SpringCloud,我会把学习成果总结下来,供大家参考学习,有兴趣可以一起来学!如有错误,望指正! Spring .SpringBoot.Sprin ...
随机推荐
- 2019-8-31-C#-匹配可空变量
title author date CreateTime categories C# 匹配可空变量 lindexi 2019-08-31 16:55:58 +0800 2019-06-01 08:40 ...
- 中文javadoc
大量的中文注释,其实最大的目的是想生成中文的Javadoc.但是中文注释实在太不高级了,在各种编码下还会变成乱码.本着高端大气国际化的思路,还是想把它换成英文,但是又不想放弃中文的Javadoc,怎么 ...
- 将 using namespace 写在函数体中,以避免命名空间冲突
将 using namespace xxx 写在函数体中时, 命名空间 xxx 中定义的资源只在该函数体中有效. 测试代码如下图所示(namespace std 只在函数 testFun2 中有效):
- Linux 2>&1的意思
2>&1的意思是将标准错误(2)也定向到标准输出(1)的输出文件中. 我们来具体了解下:Linux 中三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1, ...
- HRegion 分配与寻址
1.Region 分配 HMaster负责为Region 分配Region Server,一个Region 只能分配给一个Region server. HMaster中 记录: 哪些Regio ...
- WWDC2018 之 高性能 Auto Layout
1. 关于 Auto Layout 的历史渊源 上世纪 90 年代,名叫 Cassowary的布局算法,通过将布局问题抽象成线性不等式,并分解成多个位置间的约束,解决了用户界面的布局问题. Apple ...
- codefoce 782c
好久没有更新了,特地来水一水 简单的涂色问题,大佬说基本都是贪心 #include<cstdio> #include<iostream> #include<vector& ...
- shell脚本查找tcp过多ip地址封掉
#!/bin/bash #hc source /etc/profile iplist=`netstat -ntu | awk '{print $5}'| cut -d':' -f1| sort |un ...
- IDEA模板快捷键
2.1 psvm:可生成 main 方法 2.2 sout:System.out.println() 快捷输出 类似的: soutp=System.out.println("方法形参名 = ...
- antDeaign-form-getFieldDecorator 使用注意事项
2020-01-06 antDeaign-form-getFieldDecorator 使用注意事项 一.使用getFieldDecorator之前,必须先使用 Form.create({ })(Fo ...