返回顶部
首页 > 资讯 > 后端开发 > Python >详解SpringCloudZuul网关修改为短连接方法
  • 203
分享到

详解SpringCloudZuul网关修改为短连接方法

2024-04-02 19:04:59 203人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、问题分析二、解决方式一、问题分析 之前在用zuul网关的时候,请求几次然后连接就断开了。原因是因为Http1.1之后,默认走的都是connection=keep-alive

一、问题分析

之前在用zuul网关的时候,请求几次然后连接就断开了。原因是因为Http1.1之后,默认走的都是connection=keep-alive 长连接。但没有心跳维持,顾1分钟断开一次。但RestFul一般都是走短连接就行了。因此想着只要修改头部connection属性就行了.

就是在过滤器中修改Zuul的RequestContext ctx对象

        //设置请求为短连接
        ctx.addZuulRequestHeader("connection", "close");

再次请求之后发现

​纳尼,怎么还是长连接。那么说明可能是我的设置没有生效或者被覆盖掉了。遇到问题,除了度娘,跟着源码走一遭也是最好的方式。花了大半天时间,终于让我找到原因了。

原因是代理类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"这些头的话都被跳过。不会被设置成功。应该是zuul自己的一个机制把。

二、解决方式

那么问题找到了,该怎么修改呢?那么只能自定义路由了。继承并重写这个类。

1、实现自定义路由配置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、实现自定义请求代理工具类 重写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、重写实现代理配置类

@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);
    }

}

然后重新启动,查看请求头。

​修改成功。所以说,学会通过看源码查问题,还是很重要的哈~

到此这篇关于详解spring cloud Zuul网关修改为短连接方法的文章就介绍到这了,更多相关spring Cloud Zuul短连接内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解SpringCloudZuul网关修改为短连接方法

本文链接: https://lsjlt.com/news/146253.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解SpringCloudZuul网关修改为短连接方法
    目录一、问题分析二、解决方式一、问题分析 之前在用zuul网关的时候,请求几次然后连接就断开了。原因是因为http1.1之后,默认走的都是connection=keep-alive ...
    99+
    2024-04-02
  • Spring Cloud Zuul网关怎么修改为短连接
    今天小编给大家分享一下Spring Cloud Zuul网关怎么修改为短连接的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2023-06-30
  • 电脑无法连接到网关的解决方法
    小编给大家分享一下电脑无法连接到网关的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!电脑无法连接到网关的解决方法:1、打开命令提示符,执行【netsh w...
    99+
    2023-06-14
  • 详解如何修改MySQL最大连接数
    修改 mysql 最大连接数 JDBC 操作MySQL数据库的时候 遇到这行报错 很明显 是数据库连接数超限了修改MySQL数据库连接数 具体操作如下 查看 MySQL 数据库当前默认支持最大连接数 show varia...
    99+
    2022-08-09
    修改MySQL最大连接数 MySQL最大连接数
  • linux中修改网关地址的方法
    linux中修改网关地址的方法:1.打开终端;2.输入“ifconfig”命令查看网卡信息;3.打开/etc/sysconfig/network-scripts/ifcfg-eth0配置文件;4.修改文件中对应的网关地址配置;5.输入“se...
    99+
    2024-04-02
  • oracle修改连接数的方法是什么
    在 Oracle 数据库中,可以通过修改初始化参数文件(init.ora)或使用 ALTER SYSTEM 命令来调整连接数。 通过...
    99+
    2024-04-09
    oracle
  • Python连接SQLServer2000的方法详解
    本文实例讲述了Python连接SQLServer2000的方法。分享给大家供大家参考,具体如下: http://pymssql.sourceforge.net/ 介绍PYTHON 连接MSSQL的好地址的...
    99+
    2022-06-04
    详解 方法 Python
  • mysql远程连接端口并修改的方法
    这篇文章主要介绍了mysql远程连接端口并修改的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql远程连接端口并修改的方法:首先进入m...
    99+
    2024-04-02
  • phpcms v9去除盛大连接 关闭盛大通行证的修改方法
    打开根目录\caches\configs\system.php文件,这是phpcms v9的核心文件,找到以下代码: 复制代码代码如下:'connect_enable' => '1', //是否开启外部通行证'si...
    99+
    2022-06-12
    phpcms 盛大连接 通行证
  • 详解Gitlab修改路径的方法
    Gitlab是一款流行的代码托管平台,许多程序员使用它来协作开发代码。不过,在使用Gitlab的过程中,有时候我们需要对项目的路径进行修改。本文将介绍Gitlab修改路径的方法。关闭Gitlab服务在进行路径修改之前,请先关闭Gitlab服...
    99+
    2023-10-22
  • mysql修改开启允许远程连接的方法
    这篇文章主要介绍mysql修改开启允许远程连接的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一步,用dos连接上你的数据库,(我这里说的是win)然后选择系统库,mysql命...
    99+
    2024-04-02
  • mysql修改最大连接数的方法有哪些
    这篇文章主要讲解了“mysql修改最大连接数的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql修改最大连接数的方法有哪些”吧!  方法一:...
    99+
    2024-04-02
  • navicat连接mysql修改root密码最简洁方法
    目录navicat连接mysql修改root密码1、在navicat中选中目标数据库打开链接;2、命令行中输入修改语句;补充:MySQL数据库忘记root密码,Navicat修改ro...
    99+
    2023-05-20
    navicat连接mysql修改密码 navicat修改密码
  • deepin20网关地址怎么设置?deepin修改网关地址的方法
    deepin20怎么查看网关地址?设置方法很简单,我们介绍两种,都方便操作,详细请看下文介绍。 方法一: 桌面空白处右键选择【在终端中打开】。 输入route,按回车键执行,Gateway一栏即为网关。 方法二: 点【启...
    99+
    2022-06-03
    deepin 网关地址
  • centos7修改网关和配置ip的方法示例
    centos7版本在当时安装的时候选择可连接外网,就直接可以访问外网的,只需要设置静态Ip就可以了.   修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-...
    99+
    2022-06-04
    centos7修改网关 centos7 配置ip
  • gitlab怎么修改域名?方法详解
    在使用GitLab时,有时候我们需要修改GitLab的访问域名,比如原来是通过IP地址进行访问,现在需要改成域名进行访问。本文将介绍如何修改GitLab的域名。修改hosts文件在修改GitLab的访问域名之前,需要先修改hosts文件,将...
    99+
    2023-10-22
  • Discuz论坛头像修改方法详解
    Discuz论坛头像修改方法详解 在Discuz论坛中,头像是用户个人资料中的重要部分,能够帮助用户展示自己的个性和特色。默认情况下,Discuz论坛提供了一些头像供用户选择,但有时候...
    99+
    2024-03-02
    论坛 头像 修改
  • 织梦CMS表名修改方法详解
    标题:织梦CMS表名修改方法详解 织梦CMS(DedeCMS)是一款功能强大的开源内容管理系统,被广泛应用于网站建设中。在开发和定制网站时,有时候我们需要修改织梦CMS默认的表名来符合...
    99+
    2024-03-13
    方法详解 织梦cms 表名修改 数据丢失
  • 远程连接mysql 授权方法详解
    今在服务器上 有mysql 数据库,远程访问,不想公布root账户,所以,创建了demo账户,允许demo账户在任何地方都能访问mysql数据库中shandong库。 方案一: 在安装mysql的机器上运行...
    99+
    2024-04-02
  • Java连接MongoDB的常用方法详解
    目录一、Java链接MongoDB二、查看库,查看集合三、Java对MongoDB增删改查1. 添加数据2. 删除数据3. 修改数据4. 查询数据一、Java链接MongoDB 1....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作