国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微服務(wù)中間件--http客戶端Feign

這篇具有很好參考價(jià)值的文章主要介紹了微服務(wù)中間件--http客戶端Feign。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

http客戶端Feign

a.Feign替代RestTemplate

以前利用RestTemplate發(fā)起遠(yuǎn)程調(diào)用的代碼:

String url = "http://userservice/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);

存在下面的問(wèn)題:

  • 代碼可讀性差,編程體驗(yàn)不統(tǒng)一
  • 參數(shù)復(fù)雜URL難以維護(hù)

Feign的介紹

Feign是一個(gè)聲明式的http客戶端, 其作用就是幫助我們優(yōu)雅的實(shí)現(xiàn)http請(qǐng)求的發(fā)送, 解決上面提到的問(wèn)題。

微服務(wù)中間件--http客戶端Feign,微服務(wù)中間件,微服務(wù),中間件,http,java,架構(gòu),spring cloud

使用Feign的步驟如下:

1.引入依賴:

<!--Feign客戶端依賴-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.在order-service的啟動(dòng)類添加注解@EnableFeignClients開(kāi)啟Feign的功能:

@EnableFeignClients
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

3.編寫clients/UserClient中Feign客戶端:

@FeignClient("userservice")
public interface UserClient {
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

主要是基于SpringMVC的注解來(lái)聲明遠(yuǎn)程調(diào)用的信息,比如:

  • 服務(wù)名稱:userservice
  • 請(qǐng)求方式:GET
  • 請(qǐng)求路徑:/user/{id}
  • 請(qǐng)求參數(shù):Long id
  • 返回值類型:User

4.用Feign客戶端代替RestTemplate

微服務(wù)中間件--http客戶端Feign,微服務(wù)中間件,微服務(wù),中間件,http,java,架構(gòu),spring cloud

b.自定義Feign的配置

Feign運(yùn)行自定義配置來(lái)覆蓋默認(rèn)配置,可以修改的配置如下:

微服務(wù)中間件--http客戶端Feign,微服務(wù)中間件,微服務(wù),中間件,http,java,架構(gòu),spring cloud

一般我們需要配置的就是日志級(jí)別。

配置Feign日志有兩種方式:

方式一:配置文件方式

  • 全局生效:
feign:
  client:
    config:
      default: # 這里用default就是全局配置,如果是寫服務(wù)名稱,則是針對(duì)某個(gè)微服務(wù)的配置
        loggerLevel: Full # 日志級(jí)別
  • 局部生效:
feign:
  client:
    config:
      userservice: # 寫服務(wù)名稱,則是針對(duì)某個(gè)微服務(wù)的配置
        loggerLevel: Full # 日志級(jí)別

方式二:java代碼方式,需要先聲明一個(gè)Bean,在config/DefaultFeignConfiguration:

public class DefaultFeignConfiguration {
    @Bean
    public Logger.Level logLevel(){
        return Logger.Level.BASIC;
    }
}

而后如果是全局配置,則把它放到@EnableFeignClients這個(gè)注解中:

@EnableFeignClients(defaultConfiguration = FeignClientConfiguration.class) 

如果是局部配置,則把它放到@FeignClient這個(gè)注解中:

@FeignClient(value = "userservice", configuration = FeignClientConfiguration.class) 

c.Feign的性能優(yōu)化

Feign底層的客戶端實(shí)現(xiàn):

  • URLConnection:默認(rèn)實(shí)現(xiàn),不支持連接池
  • Apache HttpClient :支持連接池
  • OKHttp:支持連接池

因此優(yōu)化Feign的性能主要包括:

  • 使用HttpClient 或者OKHttp連接池代替默認(rèn)的URLConnection
  • 日志級(jí)別,最好用basic或none

Feign添加HttpClient的支持:

1.引入依賴:

<!--HttpClient依賴-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>

2.配置連接池:

feign:
  client:
    config:
      default: # default全局的配置
        loggerLevel: BASIC # 日志級(jí)別,BASIC就是基本的請(qǐng)求和響應(yīng)信息
  httpclient:
    enabled: true # 開(kāi)啟feign對(duì)HttpClient的支持
    max-connections: 200 # 最大的連接數(shù)
    max-connections-per-route: 50 # 每個(gè)路徑的最大連接數(shù)

d.Feign的最佳實(shí)踐分析

方式一(繼承):給消費(fèi)者的FeignClient和提供者的controller定義統(tǒng)一的父接口作為標(biāo)準(zhǔn)

  • 服務(wù)緊耦合
  • 父接口參數(shù)列表中的映射不會(huì)被繼承

微服務(wù)中間件--http客戶端Feign,微服務(wù)中間件,微服務(wù),中間件,http,java,架構(gòu),spring cloud

方式二(抽?。簩eignClient抽取為獨(dú)立模塊,并且把接口有關(guān)的POJO、默認(rèn)的Feign配置都放到這個(gè)模塊中,提供給所有消費(fèi)者使用

微服務(wù)中間件--http客戶端Feign,微服務(wù)中間件,微服務(wù),中間件,http,java,架構(gòu),spring cloud

e.Feign實(shí)現(xiàn)最佳實(shí)踐(方式二)

實(shí)現(xiàn)最佳實(shí)踐方式二的步驟如下:

  • 1.首先創(chuàng)建一個(gè)module,命名為feign-api,然后引入feign的starter依賴
  • 2.將order-service中編寫的UserClient、User、DefaultFeignConfiguration都復(fù)制到feign-api項(xiàng)目中
  • 3.在order-service中引入feign-api的依賴
  • 4.修改order-service中的所有與上述三個(gè)組件有關(guān)的import部分,改成導(dǎo)入feign-api中的包
  • 5.重啟測(cè)試

當(dāng)定義的FeignClient不在SpringBootApplication的掃描包范圍時(shí),這些FeignClient無(wú)法使用。有兩種方式解決:

方式一:指定FeignClient所在包

@EnableFeignClients(basePackages = "cn.itcast.feign.clients")

方式二 (推薦):指定FeignClient字節(jié)碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-670195.html

@EnableFeignClients(clients = {UserClient.class})

到了這里,關(guān)于微服務(wù)中間件--http客戶端Feign的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Nginx HTTP/3服務(wù)器-客戶端環(huán)境搭建

    一、 NGINX 服務(wù)器介紹: NGINX是一個(gè)高性能的開(kāi)源Web服務(wù)器,也可用作反向代理服務(wù)器、負(fù)載均衡器和HTTP緩存。它由俄羅斯的程序員Igor Sysoev創(chuàng)建,并于2004年首次公開(kāi)發(fā)布。NGINX的設(shè)計(jì)重點(diǎn)是高性能、高并發(fā)和低內(nèi)存消耗,使其成為了現(xiàn)代Web架構(gòu)中的關(guān)鍵組件之一。 NGINX的一些

    2024年03月11日
    瀏覽(28)
  • java代碼構(gòu)建簡(jiǎn)單http服務(wù)器和客戶端

    java代碼構(gòu)建簡(jiǎn)單http服務(wù)器和客戶端

    初識(shí)http a、超文本傳輸 、應(yīng)用層的面向?qū)ο蟮膮f(xié)議,概念介紹網(wǎng)上資源一大堆,關(guān)鍵是基于TCP/IP通信協(xié)議來(lái)傳遞數(shù)據(jù)。 b、一開(kāi)始接觸web項(xiàng)目,都是先接觸的servlet,tomcat服務(wù)器默認(rèn)實(shí)現(xiàn)的一套http規(guī)范,提供了基礎(chǔ)服務(wù)和組件環(huán)境,直接拿到請(qǐng)求、構(gòu)建正文、響應(yīng)客戶端 然而

    2024年02月10日
    瀏覽(28)
  • 使用Go語(yǔ)言的HTTP客戶端和服務(wù)器

    使用Go語(yǔ)言的HTTP客戶端和服務(wù)器

    使用Go語(yǔ)言進(jìn)行HTTP客戶端和服務(wù)器開(kāi)發(fā)是一種高效且強(qiáng)大的方式。Go語(yǔ)言的標(biāo)準(zhǔn)庫(kù)提供了對(duì)HTTP協(xié)議的全面支持,使得創(chuàng)建HTTP客戶端和服務(wù)器變得簡(jiǎn)單。 首先,讓我們來(lái)看一下如何創(chuàng)建一個(gè)簡(jiǎn)單的HTTP服務(wù)器。在Go中,可以使用 net/http 包來(lái)創(chuàng)建HTTP服務(wù)器。以下是一個(gè)簡(jiǎn)單的示例

    2024年01月16日
    瀏覽(47)
  • 使用HTTP/2實(shí)現(xiàn)服務(wù)端主動(dòng)推送消息給客戶端

    使用HTTP/2實(shí)現(xiàn)服務(wù)端主動(dòng)推送消息給客戶端

    77. 使用HTTP/2實(shí)現(xiàn)服務(wù)端主動(dòng)推送消息給客戶端 HTTP/2 協(xié)議的服務(wù)器主動(dòng)推送機(jī)制是通過(guò)服務(wù)器在接收到客戶端請(qǐng)求后,主動(dòng)向客戶端推送相關(guān)資源的方式來(lái)實(shí)現(xiàn)的。下面將詳細(xì)解釋如何在服務(wù)器端和客戶端實(shí)現(xiàn) HTTP/2 的服務(wù)器主動(dòng)推送,并給出相應(yīng)的代碼示例。 客戶端實(shí)現(xiàn):

    2024年02月11日
    瀏覽(31)
  • Netty理論與實(shí)踐(二) 創(chuàng)建http客戶端 服務(wù)端

    Netty理論與實(shí)踐(二) 創(chuàng)建http客戶端 服務(wù)端

    1. 使用echo服務(wù)器模擬http 通過(guò)上一篇文章中的echo服務(wù)器程序來(lái)模擬一次HTTP請(qǐng)求。 接收消息的代碼如下: 我們通過(guò)postman直接訪問(wèn)echo服務(wù)器: 請(qǐng)求成功,echo服務(wù)器接收到了本次HTTP請(qǐng)求,控制臺(tái)打印內(nèi)容如下: 上面的原理很容易理解,postman通過(guò)tcp建立與服務(wù)器localhost:8001的連

    2024年02月16日
    瀏覽(20)
  • HTTP介紹 原理 消息結(jié)構(gòu) 客戶端請(qǐng)求 服務(wù)器響應(yīng) HTTP狀態(tài)碼

    HTTP介紹 原理 消息結(jié)構(gòu) 客戶端請(qǐng)求 服務(wù)器響應(yīng) HTTP狀態(tài)碼

    HTTP協(xié)議 是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于萬(wàn)維網(wǎng)(www.world wide web)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議 HTTP 是基于TCP/IP(三次握手,四次揮手)通信協(xié)議來(lái)傳輸數(shù)據(jù)(HTML文件,圖片文件,查詢結(jié)果等) TCP:可靠的,丟包重傳 UTP:不可靠的,直播,

    2024年02月05日
    瀏覽(28)
  • linux搭建http源【服務(wù)端和客戶端詳細(xì)說(shuō)明】

    linux搭建http源【服務(wù)端和客戶端詳細(xì)說(shuō)明】

    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 [root@master ~]# 關(guān)閉防火墻和selinux firewall的話,直接 systemctl stop firewalld 即可 如果使用的是iptables,則吧firewalld替換成iptables [root@master ~]# systemctl is-active firewalld active [root@master ~]# [root@master ~]# systemctl stop firewalld [root@master ~]# [root@m

    2024年04月13日
    瀏覽(33)
  • linux搭建http源【服務(wù)端和客戶端詳細(xì)說(shuō)明(1)

    linux搭建http源【服務(wù)端和客戶端詳細(xì)說(shuō)明(1)

    我下面的HTTP配置使用的包就是iso鏡像里面的包【同理,我們只要會(huì)這種方式以后,使用什么包都一樣,可以自己在網(wǎng)上下載自己需要的包和依賴,然后通過(guò)這種方式配置成http源,然后就可以直接使用yum安裝了,這樣的好處是解決軟件在安裝的時(shí)候會(huì)有許多依賴包這個(gè)繁瑣的

    2024年04月11日
    瀏覽(25)
  • 【微服務(wù)|SpringBoot 3.0】 新特性——內(nèi)置聲明式HTTP客戶端

    【微服務(wù)|SpringBoot 3.0】 新特性——內(nèi)置聲明式HTTP客戶端

    從Spring 6和Spring Boot 3開(kāi)始,Spring framework支持將遠(yuǎn)程HTTP服務(wù)代理為帶有HTTP交換注解方法的Java接口。類似的庫(kù),如OpenFeign和Retrofit,仍然可以使用,但HttpServiceProxyFactory添加了對(duì)Spring框架的原生支持。 聲明式 http 客戶端主旨是使得編寫 java http 客戶端更容易。為了貫徹這個(gè)理念

    2024年02月16日
    瀏覽(18)
  • QT實(shí)現(xiàn)客戶端服務(wù)器HTTP(get請(qǐng)求、post請(qǐng)求)

    QT實(shí)現(xiàn)客戶端服務(wù)器HTTP(get請(qǐng)求、post請(qǐng)求)

    服務(wù)器代碼如下: QtHttpForS.h QtHttpForS.cpp main.cpp QtHttpForS.ui 客戶端代碼: QtHttpForC.h QtHttpForC.cpp mian.cpp QtHttpForC.ui 程序運(yùn)行效果: GET請(qǐng)求: POST請(qǐng)求: POST請(qǐng)求使用postman測(cè)試: 注意: 可以發(fā)現(xiàn),在使用postman進(jìn)行POST請(qǐng)求發(fā)送時(shí),服務(wù)器接收到的請(qǐng)求頭與QTSocket的POST請(qǐng)求的請(qǐng)求頭

    2023年04月22日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包