最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Spring Cloud Zuul網(wǎng)關(guān)修改為短連接方法

 更新時(shí)間:2022年04月17日 11:15:30   作者:王老獅  
本文主要介紹了詳解Spring Cloud Zuul網(wǎng)關(guān)修改為短連接方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、問(wèn)題分析

之前在用zuul網(wǎng)關(guān)的時(shí)候,請(qǐng)求幾次然后連接就斷開(kāi)了。原因是因?yàn)閔ttp1.1之后,默認(rèn)走的都是connection=keep-alive 長(zhǎng)連接。但沒(méi)有心跳維持,顧1分鐘斷開(kāi)一次。但RestFul一般都是走短連接就行了。因此想著只要修改頭部connection屬性就行了.

就是在過(guò)濾器中修改Zuul的RequestContext ctx對(duì)象

        //設(shè)置請(qǐng)求為短連接
        ctx.addZuulRequestHeader("connection", "close");

再次請(qǐng)求之后發(fā)現(xiàn)

?納尼,怎么還是長(zhǎng)連接。那么說(shuō)明可能是我的設(shè)置沒(méi)有生效或者被覆蓋掉了。遇到問(wèn)題,除了度娘,跟著源碼走一遭也是最好的方式?;舜蟀胩鞎r(shí)間,終于讓我找到原因了。

原因是代理類(lèi)ProxyRequestHelper里面有段邏輯。

public boolean isIncludedHeader(String headerName) {
		String name = headerName.toLowerCase();
		RequestContext ctx = RequestContext.getCurrentContext();
		if (ctx.containsKey(IGNORED_HEADERS)) {
			Object object = ctx.get(IGNORED_HEADERS);
			if (object instanceof Collection && ((Collection<?>) object).contains(name)) {
				return false;
			}
		}
		switch (name) {
		case "host":
			if(addHostHeader) {
				return true;
			}
		case "connection":
		case "content-length":
		case "server":
		case "transfer-encoding":
		case "x-application-context":
			return false;
		default:
			return true;
		}
	}

如果頭部存在"connection": "content-length": "server": "transfer-encoding": "x-application-context"這些頭的話都被跳過(guò)。不會(huì)被設(shè)置成功。應(yīng)該是zuul自己的一個(gè)機(jī)制把。

二、解決方式

那么問(wèn)題找到了,該怎么修改呢?那么只能自定義路由了。繼承并重寫(xiě)這個(gè)類(lèi)。

1、實(shí)現(xiàn)自定義路由配置CustomZuulConfig

@Component
public class CustomZuulConfig {

    @Autowired
    ZuulProperties zuulProperties;

    @Value("${servletPath}")
    private String servletPath;

    @Bean
    public CustomRouteLocator routeLocator() {
        CustomRouteLocator routeLocator = new CustomRouteLocator(servletPath, this.zuulProperties);
        return routeLocator;
    }

}

2、實(shí)現(xiàn)自定義請(qǐng)求代理工具類(lèi) 重寫(xiě)isIncludedHeader方法。

public class CustomRequestHelper extends ProxyRequestHelper {
    @Override
    public boolean isIncludedHeader(String headerName) {
        String name = headerName.toLowerCase();
        RequestContext ctx = RequestContext.getCurrentContext();
        if (ctx.containsKey(IGNORED_HEADERS)) {
            Object object = ctx.get(IGNORED_HEADERS);
            if (object instanceof Collection && ((Collection<?>)object).contains(name)) {
                return false;
            }
        }
        switch (name) {
            case "content-length":
            case "host":
            case "server":
            case "transfer-encoding":
            case "x-application-context":
                return false;
            default:
                return true;
        }
    }
} 

3、重寫(xiě)實(shí)現(xiàn)代理配置類(lèi)

@Configuration
@EnableZuulProxy
public class CustomZuulProxyConfig extends ZuulProxyAutoConfiguration {

    @Bean
    @Override
    public SimpleHostRoutingFilter simpleHostRoutingFilter(ProxyRequestHelper helper, ZuulProperties zuulProperties,
            ApacheHttpClientConnectionManagerFactory connectionManagerFactory,
            ApacheHttpClientFactory httpClientFactory) {
        CustomRequestHelper customRequestHelper = new CustomRequestHelper();
        return new SimpleHostRoutingFilter(customRequestHelper, zuulProperties, connectionManagerFactory,
                httpClientFactory);
    }

}

然后重新啟動(dòng),查看請(qǐng)求頭。

?修改成功。所以說(shuō),學(xué)會(huì)通過(guò)看源碼查問(wèn)題,還是很重要的哈~

到此這篇關(guān)于詳解Spring Cloud Zuul網(wǎng)關(guān)修改為短連接方法的文章就介紹到這了,更多相關(guān)Spring Cloud Zuul短連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • centos下編譯安裝mysql報(bào)錯(cuò)解決方案

    centos下編譯安裝mysql報(bào)錯(cuò)解決方案

    今天在centos6.2下面源碼編譯安裝mysql的時(shí),在編譯mysql的時(shí)候報(bào)了一個(gè)蛋蛋的錯(cuò)誤,本文提供詳細(xì)解決方案
    2012-11-11
  • java 中createStatement()方法的實(shí)例詳解

    java 中createStatement()方法的實(shí)例詳解

    這篇文章主要介紹了java 中createStatement()方法的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Spring Boot使用AOP實(shí)現(xiàn)REST接口簡(jiǎn)易靈活的安全認(rèn)證的方法

    Spring Boot使用AOP實(shí)現(xiàn)REST接口簡(jiǎn)易靈活的安全認(rèn)證的方法

    這篇文章主要介紹了Spring Boot使用AOP實(shí)現(xiàn)REST接口簡(jiǎn)易靈活的安全認(rèn)證的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • @PathVariable 如何自動(dòng)填充入實(shí)例對(duì)象中

    @PathVariable 如何自動(dòng)填充入實(shí)例對(duì)象中

    這篇文章主要介紹了@PathVariable 實(shí)現(xiàn)自動(dòng)填充入實(shí)例對(duì)象中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java實(shí)現(xiàn)在Word指定位置插入分頁(yè)符

    Java實(shí)現(xiàn)在Word指定位置插入分頁(yè)符

    在Word插入分頁(yè)符可以在指定段落后插入,也可以在特定文本位置處插入。本文將以Java代碼來(lái)操作以上兩種文檔分頁(yè)需求,需要的可以參考一下
    2022-04-04
  • Struts2 漏洞分析及如何提前預(yù)防

    Struts2 漏洞分析及如何提前預(yù)防

    2016年4月26日,Struts2發(fā)布一份安全公告,CVE編號(hào) CVE-2016-3081。這是自2012年Struts2命令執(zhí)行漏洞大規(guī)模爆發(fā)之后,該服務(wù)時(shí)隔四年再次爆發(fā)大規(guī)模漏洞。該漏洞也是今年目前爆出的最嚴(yán)重安全漏洞。本文分析了漏洞的原理危害影響防護(hù)等內(nèi)容。
    2016-05-05
  • OpenTelemetry?Java?SDK?高級(jí)用法解析

    OpenTelemetry?Java?SDK?高級(jí)用法解析

    這篇文章主要介紹了OpenTelemetry?Java?SDK?的高級(jí)用法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java讀取寄存器數(shù)據(jù)的方法示例詳解

    Java讀取寄存器數(shù)據(jù)的方法示例詳解

    在Java中讀取硬件寄存器數(shù)據(jù)不直接支持,但可以通過(guò)JNI或JNA技術(shù)實(shí)現(xiàn),此過(guò)程需要編寫(xiě)本地代碼(如C/C++)以模擬硬件交互,然后在Java中調(diào)用這些方法,注意,JNI使用可能引入復(fù)雜性和性能開(kāi)銷(xiāo),且需考慮跨平臺(tái)兼容性,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Spring Cloud入門(mén)系列服務(wù)提供者總結(jié)

    Spring Cloud入門(mén)系列服務(wù)提供者總結(jié)

    這篇文章主要介紹了Spring Cloud入門(mén)系列之服務(wù)提供者總結(jié),服務(wù)提供者使用Eureka Client組件創(chuàng)建 ,創(chuàng)建完成以后修改某文件,具體操作方法及實(shí)例代碼跟隨小編一起看看吧
    2021-06-06
  • MyBatis Mapper.xml中的命名空間及命名方式

    MyBatis Mapper.xml中的命名空間及命名方式

    這篇文章主要介紹了MyBatis Mapper.xml中的命名空間及命名方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論

固安县| 南漳县| 小金县| 盐山县| 确山县| 元氏县| 阳曲县| 黎城县| 健康| 葵青区| 安吉县| 通河县| 彰武县| 安平县| 绿春县| 和平县| 武宣县| 镇坪县| 郯城县| 沁阳市| 蓬莱市| 基隆市| 灵台县| 德安县| 离岛区| 万载县| 曲麻莱县| 青冈县| 吴堡县| 樟树市| 平凉市| 连云港市| 津南区| 长沙县| 桦甸市| 夹江县| 济南市| 云南省| 郑州市| 田东县| 奉新县|