1.OpenFeign
openfeign和dubbo很像,例如消费者的Controller可以调用提供者的service层方法,但是不一样,它貌似只能调用提供者的Controller,即写一个提供者项目的controller接口,消费者来调用这个接口方法,就还是相当于是调用提供者的Controller,和RestTemplate没有本质的区别。
1.1Feign能干什么?
Feign指在使编写java Http客户端变得更容易。
在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模板化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个借口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它(之前是dao接口上面标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring Cloud Ribbon时,自动封装服务调用客户端的开发量
1.2Feign集成了Ribbon
利用Ribbon维护了Payment的服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,铜鼓feign只需要定义服务绑定接口且以声明式的方式,优雅而简单的实现了服务调用
1.3使用OpenFeign
新建一个消费者模块.Feign自带负载均衡配置,所以不用手动配置
1.3.1创建一个cloud-consumer-feign-order80
1.3.2导入依赖
<dependencies>
<!-- Open Feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- eureka Client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<groupId>com.krisswen.cloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>