配套资料,免费下载链接:https://pabaidu.com/s/1la_3-HW-UvliDRJzfBcP_w提取码:lxfx复制这段内容后打开百度网盘手机App,操作更方便哦
第一章OpenFeign介绍
什么是OpenFeign
OpenFeign为微服务架构下服务之间的调用提供了解决方案,OpenFeign是一种声明式、模板化的HTTP客户端。在SpringCloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。
为啥用OpenFeign
OpenFeign可以用来简化HTTP的调用。
第二章OpenFeign入门案例
项目准备
我们接下来的所有操作均是在Ribbon最后完成的工程上进行操作,相关代码请到配套资料中寻找。
创建工程
在spring-cloud-study创建一个子项目名字叫:service-consumer9002
导入依赖
org.springframework.cloud
spring-cloud-starter-openfeign
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
1.18.16
编写配置
server:
port: 9002
spring:
application:
name: service-consumer9002
eureka:
client:
#是否将自己注册到注册中心,默认为 true
register-with-eureka: false
#表示 Eureka Client 间隔多久去服务器拉取注册信息,默认为 30 秒
registry-fetch-interval-seconds: 10
#设置服务注册中心地址
service-url:
defaultZone: http://root:123456@eureka-server7001.com:7001/eureka/,http://root:123456@eureka-server7002.com:7002/eureka/
主启动类
@SpringBootApplication
@EnableFeignClients
public class ServiceConsumer9002Application {
public static void main(String[] args) {
SpringApplication.run(ServiceConsumer9002Application.class);
}
}
编写实体
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Product implements Serializable {
private Integer pid;
private String name;
private Double price;
private Integer count;
}
编写接口
@Component
@FeignClient('SERVICE-PROVIDER')
public interface ProductFeignService {
/**
* 编写技巧,直接把服务提供者那一端的控制器方法的两行拷贝过来,最后加一个分号就可以了,别的什么也不用动
*/
@RequestMapping('/provider/product/findAll')
public List findAll();
@RequestMapping('/provider/product/findByPid')
public String findByPid(@RequestParam('pid') Integer pid);
}
调用接口
@RestController
public class ProductController {
@Autowired
private ProductFeignService productFeignService;
@RequestMapping('/consumer/product/findAll')
public List findAll() {
return productFeignService.findAll();
}
@RequestMapping('/consumer/product/findByPid')
public String findByPid(@RequestParam('pid') Integer pid) {
return productFeignService.findByPid(pid);
}
}
最终测试
依次启动以下注册中心:
依次启动以下服务提供者:
依次启动以下服务消费者:
打开浏览器输入地址:http://localhost:9002/consumer/product/findAll
第三章OpenFeign超时控制
超时控制介绍
默认Feign客户端只等待一秒钟,如果服务端处理需要超过1秒钟,导致Feign客户端不想等待了,直接返回报错。
为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制。
设置超时时间
打开applicatioyaml,添加如下配置:
第四章OpenFeign日志打印
日志打印介绍
Feign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解Feign中Http请求的细节。
简单来说,就是对Feign接口的调用情况进行监控和输出。
日志打印级别
NONE:默认的,不显示任何日志。BASIC:仅记录请求方法、URL、响应状态码及执行时间。HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息。FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。
开启日志打印
编写配置对象
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
编写配置属性
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点