真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

springcloud中如何使用HTTP請求遠(yuǎn)程服務(wù)

今天就跟大家聊聊有關(guān)spring cloud 中 如何使用HTTP請求遠(yuǎn)程服務(wù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到羅田網(wǎng)站設(shè)計與羅田網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋羅田地區(qū)。

一、Feign 簡介

在spring Cloud Netflix棧中,各個微服務(wù)都是以HTTP接口的形式暴露自身服務(wù)的,因此在調(diào)用遠(yuǎn)程服務(wù)時就必須使用HTTP客戶端。我們可以使用JDK原生的URLConnection、Apache的Http Client、Netty的異步HTTP Client, Spring的RestTemplate。但是,用起來最方便、最優(yōu)雅的還是要屬Feign了。

Feign是一種聲明式、模板化的HTTP客戶端。在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠(yuǎn)程服務(wù)時能與調(diào)用本地方法一樣的編碼體驗,開發(fā)者完全感知不到這是遠(yuǎn)程方法,更感知不到這是個HTTP請求。

二、feign的使用在spring cloud中的使用

1、添加依賴

   
      org.springframework.cloud
      spring-cloud-starter-feign
    

2、創(chuàng)建FeignClient 

@FeignClient(name="SPRING-PRODUCER-SERVER/spring")
public interface FeignUserClient {
 @RequestMapping( value = "/findAll/{name}",method = RequestMethod.GET)
 public List findAll(@PathVariable("name") String name);
 
 @RequestMapping( value = "/findUserPost",method = RequestMethod.POST)
 public SpringUser findUserPost(@RequestBody SpringUser springUser);//復(fù)合類型好像默認(rèn)是POST請求
}

@FeignClient(name="SPRING-PRODUCER-SERVER/spring"):用于通知Feign組件對該接口進行代理(不需要編寫接口實現(xiàn)),name屬性指定我們要調(diào)用哪個服務(wù)。使用者可直接通過@Autowired注入。

@RequestMapping表示在調(diào)用該方法時需要向/group/{groupId}發(fā)送GET請求。

@PathVariable與SpringMVC中對應(yīng)注解含義相同。

原理:Spring Cloud應(yīng)用在啟動時,F(xiàn)eign會掃描標(biāo)有@FeignClient注解的接口,生成代理,并注冊到Spring容器中。生成代理時Feign會為每個接口方法創(chuàng)建一個RequetTemplate對象,該對象封裝了HTTP請求需要的全部信息,請求參數(shù)名、請求方法等信息都是在這個過程中確定的,F(xiàn)eign的模板化就體現(xiàn)在這里。

3、啟動類上添加注解

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableEurekaClient
@EnableFeignClients
public class SpringConsumerServerFeignApplication {
  public static void main(String[] args) {
    SpringApplication.run(SpringConsumerServerFeignApplication.class, args);
  }
}

4、配置文件 application.yml

spring:
 application:
 name: spring-consumer-server-feign
server: 
 port: 8084
 context-path: /spring
#服務(wù)注冊中心的配置內(nèi)容,指定服務(wù)注冊中心的位置
eureka:
 client:
 serviceUrl:
  defaultZone: http://user:password@localhost:8761/eureka/

三、自定義Feign的 配置

1、自定義Configuration

@Configuration
public class FooConfiguration {
  @Bean
  public Contract feignContract() {
    //這將SpringMvc Contract 替換為feign.Contract.Default
    return new feign.Contract.Default();
  }
}

2、使用自定義的Configuration

@FeignClient(name="SPRING-PRODUCER-SERVER/spring",configuration=FooConfiguration.class)
public interface FeignUserClient {
  @RequestLine("GET /findAll/{name}")
  public List findAll(@Param("name") String name);  
 /* @RequestMapping( value = "/findAll/{name}",method = RequestMethod.GET)
 public List findAll(@PathVariable("name") String name);
 
 @RequestMapping( value = "/findUserPost",method = RequestMethod.POST)
 public SpringUser findUserPost(@RequestBody SpringUser springUser);*/
}

@RequestLine:是feign的注解

四、Feign日志的配置

為每個創(chuàng)建的Feign客戶端創(chuàng)建一個記錄器。默認(rèn)情況下,記錄器的名稱是用于創(chuàng)建Feign客戶端的接口的完整類名。Feign日志記錄僅響應(yīng)DEBUG級別。logging.level.project.user.UserClient: DEBUG

在配置文件application.yml 中加入:

logging:
 level:
 com.jalja.org.spring.simple.dao.FeignUserClient: DEBUG 

在自定義的Configuration的類中添加日志級別

@Configuration
public class FooConfiguration {
  /* @Bean
  public Contract feignContract() {
    //這將SpringMvc Contract 替換為feign.Contract.Default
    return new feign.Contract.Default();
  }*/
  @Bean
  Logger.Level feignLoggerLevel() {
    //設(shè)置日志
    return Logger.Level.FULL;
  }
}

PS:Feign請求超時問題

Hystrix默認(rèn)的超時時間是1秒,如果超過這個時間尚未響應(yīng),將會進入fallback代碼。而首次請求往往會比較慢(因為Spring的懶加載機制,要實例化一些類),這個響應(yīng)時間可能就大于1秒了

解決方案有三種,以feign為例。

方法一

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000

該配置是讓Hystrix的超時時間改為5秒

方法二

hystrix.command.default.execution.timeout.enabled: false

該配置,用于禁用Hystrix的超時時間

方法三

feign.hystrix.enabled: false

該配置,用于索性禁用feign的hystrix。該做法除非一些特殊場景,不推薦使用。

看完上述內(nèi)容,你們對spring cloud 中 如何使用HTTP請求遠(yuǎn)程服務(wù)有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文標(biāo)題:springcloud中如何使用HTTP請求遠(yuǎn)程服務(wù)
當(dāng)前鏈接:http://weahome.cn/article/jeeepc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部