文章28 | 阅读 12784 | 点赞0
openFeign和Feign
什么是Feign
Feign 是一个声明式的我web服务客户端,使得编写web服务客户端变得非常容易 只要 创建一个 接口就行,然后后面加上注解 就可以
feign
Feign 只在使编写java Http 客户端变得更容易
前面在使用 Ribbon +RsetTemplate时利用RsetTemplate对Http请求的封装处理,形成了一套模板化的调用方法,但是在实际 开发中,由于对服务依赖的调用可能不止一个,往往一个接口会被多处调用,所以通常会针对 每一为服务自行封装一些客户 端类来包装这些依赖服务的调用,所以Feign在此基础上做了进一步的封装, 由它来帮助我们定义和实现依赖服务接口的定义 在Feign的实现下 我们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解 ,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的 接口绑定 ,简化了使用 SpringCloud Rinnon时 自动封装服务调用客户端的开发量
Feign集成Ribbon
利用Ribbon维护了 微服务的服务列表信息,并且通过轮询实现了客户端的负载均衡,而与Ribbon不同的是 通过Feign只需要定义服务绑定接口且以声明的方式的方法,简单的实现了服务调用
openFeign:
openFeign是SpringCloud在Feign的基础上支持了SpringMvc的注解openFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态的方式产生实现类 ,实现类中的负载均衡并调用其他服务
pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
主启动类 加@EnableFeignClients
开启openFeign的注解
@SpringBootApplication
@EnableFeignClients
public class OpenFeign {
public static void main(String[] args) {
SpringApplication.run(OpenFeign.class,args);
}
}
controller层正常写
在接口的 service层添加 @FeignClient(value = "注册eureka的服务名")
package com.tang.cloud.service;
import com.tang.cloud.entities.CommonResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import sun.awt.SunHints;
@FeignClient(value = "CLOUD-PROVIDER")
public interface OpenFeignService {
@GetMapping(value = "select/{id}")
public CommonResult getId(@PathVariable("id") Long id);
}
完成 自测试通过就可以
Feign的在发请求的时候只等待一秒钟,如果业务处理超过一秒钟的话,导致Feign客户端直接连接超时的错误,为了避免此错可以设置超时时间的配置
ribbon:
ReadTimeout: 6000 #6秒钟
ConnectTimeout: 6000
Feign可以打印日志
package com.atguigu.springcloud.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
日志的级别
NONE:默认的,不显示任何日志
BASIC:仅记录请求的方法 url 响应的状态码,执行时间
HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息
FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据
yml 配置
logging:
level:
com.tang.cloud.service.OpenFeignService: debug
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44520739/article/details/109572656
内容来源于网络,如有侵权,请联系作者删除!