使用FeignClient,消費方使用方法,和一些坑


1.首先我們將生產者的接口暴露出來,一般是作為獨立的對外接口,寫在一個項目里。將對外的接口打包。

當然還有我們的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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qdsg.ylt</groupId>
<artifactId>ylt_api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<description>所有對外api接口由該項目負責</description>
<modules>
<module>vedio_api</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>



<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
  //注意該依賴一定要放在spring-cloud-starter-openfeign依賴的上邊,不然消費方可能會出現一些問題
   <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>




</dependencies>

</project>

 

2.還有就是消費者,如何調用接口,

我們將打好的jar包引入到消費者的項目里邊去,通過pom引入,(接口打包的時候會有相應的坐標)。

消費者的包結構

這個是消費者的啟動類
@SpringBootApplication(scanBasePackages = {"com.qdsg","com.example"})
@EnableEurekaClient
@EnableFeignClients(basePackages= {"com.qdsg"})
public class FeignClientConsumerApplication {

public static void main(String[] args) {
SpringApplication.run(FeignClientConsumerApplication.class, args);
}
}
看到啟動類上掃面了兩個包,一個是該項目的掃描,一個是引入jar的包掃描,你也可以簡單來寫(@SpringBootApplication(scanBasePackages = {"com"}))
還有就是@FeignClient注解的掃描,掃描的是對外接口所在的包。如下:

消費者調用提供的jar包(使用注入的方式)

 

這樣就可以調用我們對外提供的接口了,但是要保證你的項目啟動並且注冊到eureka上。

如何注冊呢,配置如下

eureka:
client:
service-url:
defaultZone: #這里是服務注冊地址
register-with-eureka: true
fetch-registry: false
instance:
instance-id: 192.168.1.88
prefer-ip-address: true
lease-renewal-interval-in-seconds: 1
lease-expiration-duration-in-seconds: 5

 

下面就是對外提供的接口

對外的接口

 

 

異常回調

當然還有用到的實體類都要暴露出來

 消費者配置

##配置項目名字
eureka:
client:
service-url:
defaultZone: http://119.3.18.49:8071/eurekaservers/eureka/
fetch-registry: true
register-with-eureka: false
# #feign 對hytrix的支持
feign:
hystrix:
enabled: true
ribbon:
ReadTimeout: 15000
ConnectTimeout: 60000

hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 20000

 加上最后一個配置熔斷才會有作用

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM