当前位置:网站首页>9.OpenFeign服务接口调用
9.OpenFeign服务接口调用
2022-06-27 16:26:00 【苦 糖 果】
1. 概述
1.1 OpenFeign是什么?
Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可
GitHub:https://github.com/spring-cloud/spring-cloud-openfeign
1.2 能干嘛
1.3Feign和OpenFeign两者区别
2.OpenFeign使用步骤
2.1 新建cloud-consumer-feign-order80
Feign在消费端使用
接口+注解 微服务调用接口[email protected]
2.2 改pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.atguigu.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-consumer-feign-order80</artifactId>
<!--openfeign-->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2.3改yml
server:
port: 80
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka, http://eureka7002.com:7002/eureka
2.4 主启动类标注注解@EnableFeignClients
@SpringBootApplication
@EnableFeignClients
public class OrderFeignMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderFeignMain80.class,args);
}
}
2.5 业务类
业务逻辑接口[email protected]配置调用provider服务
新建PaymentFeignService接口并新增注解@FeignClient
@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {
@GetMapping(value = "/payment/get/{id}")
public CommonResult getPaymentById(@PathVariable("id") Long id);
}
@RestController
public class OrderFeignController {
@Resource
private PaymentFeignService paymentFeignService;
@GetMapping(value = "/consumer/payment/get/{id}")
public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id){
return paymentFeignService.getPaymentById(id);
}
}
2.6 测试
先启动2个eureka集群7001/7002,再启动2个微服务8001/8002,启动OpenFeign启动
http://localhost/consumer/payment/get/3
Feign自带负载均衡配置项
总结:
3.OpenFeign超时控制和日志打印功能
3.1超时控制
OpenFeign默认等待一秒钟,超过后报错
OpenFeign默认支持Ribbon
YML文件里需要开启OpenFeign客户端超时控制,即ribbon的超时控制
ribbon:
ReadTimeout: 5000 # 建立连接后从服务器读取可用资源所用的时间
ConnectTimeout: 5000 #建立连接需要的时间,适用于网络状况正常的情况下,两端连接所用的时间
3.2日志打印
日志级别:
写配置类
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
改yml
logging:
level:
com.atguigu.springcloud.service.PaymentFeignService: debug
后台查看
边栏推荐
- About binary
- Current market situation and development prospect forecast of global concrete shrinkage reducing agent industry in 2022
- How to rewrite tdengine code from 0 to 1 with vscode in "technical class"
- 如何制作登录界面
- 开源之夏 2022 | openGauss 项目中选公布
- 广汽三菱全新欧蓝德首次国内亮相于年内上市 产品力全面焕新
- Set up your own website (10)
- China's Industrial Software Market Research Report is released, and SCADA and MES of force control enrich the ecology of domestic industrial software
- Market status and development prospect forecast of global triisopropyl chlorosilane industry in 2022
- MongoDB和MySQL的区别
猜你喜欢
The data synchronization tool dataX has officially supported reading and writing tdengine
【协会通知】关于举办人工智能与物联网领域暑假专题师资培训的通知
Hikvision tools manager Hikvision tools collection (including sadp, video capacity calculation and other tools) a practical tool for millions of security practitioners
Space calculation of information and innovation industry in 2022
[notice of the Association] notice on holding summer special teacher training in the field of artificial intelligence and Internet of things
GAC Mitsubishi's new outlander made its first domestic debut in the year, and its product strength was fully renewed
Keras深度学习实战(12)——面部特征点检测
[Tang Laoshi] C -- encapsulation: member method
Rxjs mergeMap 的使用场合
数据同步工具 DataX 已经正式支持读写 TDengine
随机推荐
MongoDB和MySQL的区别
推荐几个开源的物联网平台
Wechat applet map displays the current position with annotation
Two methods of MySQL database login and logout
写在eclipse里面,与数据库连接查询之后的问题
[Tang Laoshi] C -- encapsulation: member method
Teach you how to install Oracle 19C on Windows 10 (detailed picture and text with step on pit Guide)
【ELT.ZIP】OpenHarmony啃论文俱乐部—见证文件压缩系统EROFS
Control file related views
About binary
Differences between mongodb and MySQL
DOM object in JS
Tdengine connector goes online Google Data Studio store
Bit. Store: long bear market, stable stacking products may become the main theme
WOx WPM installing the Youdao plug-in
时间序列数据的特点
Advanced learning of MySQL -- Application -- Optimization of other SQL statements
China's Industrial Software Market Research Report is released, and SCADA and MES of force control enrich the ecology of domestic industrial software
Advanced learning of MySQL -- Application -- view, stored procedure, trigger
Explain the distributed computing of Apache skywalking OAP in detail