spring-gateway配置说明

news2024/10/7 6:42:41

在开发过程中遇到的一些配置问题,记录下来以供参考
spring-gateway版本是2.2.9-release,使用的spring cloud dependence 是 Hoxton.SR12

在依赖eureka 服务发现并自动将发现服务器加入到router中的时候,需要指定对应的服务进行添加,根据文档描述可以使用spring.cloud.gateway.discovery.locator.include-expression 参数允许接收一个 spel表达式,用于判定当前的service instance是否允许进行自动路由,我所遇到的问题是不清楚可以依靠那些字段进行判断,根据报错信息,可以定位到,spel表达式执行的上下文是ServiceInstance,具体的逻辑代码在org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator#getRouteDefinitions
代码如下

     SpelExpressionParser parser = new SpelExpressionParser();
        Expression includeExpr = parser.parseExpression(this.properties.getIncludeExpression());
        Expression urlExpr = parser.parseExpression(this.properties.getUrlExpression());
        Predicate includePredicate;
        if (this.properties.getIncludeExpression() != null && !"true".equalsIgnoreCase(this.properties.getIncludeExpression())) {
            includePredicate = (instance) -> {
                Boolean include = (Boolean)includeExpr.getValue(this.evalCtxt, instance, Boolean.class);
                return include == null ? false : include;
            };
        } else {
            includePredicate = (instance) -> {
                return true;
            };
        }

同理还有urlExpr 的逻辑和include-expression类似,排除那些服务不用自动添加,使用的不同服务发现具体得到的ServiceInstance会不一致,比如eureka的支持
eurekaServiceInstance
这里提供了metadata,假设我们在配置文件中设置了对应值,那么这里就可以用
spring.cloud.gateway.discovery.locator.include-expression=metadata[xxx] == 1这种形式进行引用,比如线上服务通过给metadata文件添加版本号表示当前服务实例非稳定版本,不让它对外提供服务。配合上springbus,springconfig 可以非常方面的进行调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法训练与程序竞赛题目集合(L3)

目录 L3-001 凑零钱 输入格式: 输出格式: 输入样例 1: 输出样例 1: 输入样例 2: 输出样例 2: L3-002 特殊堆栈 输入格式: 输出格式: 输入样例: 输出样例&…

伦敦银趋势线的有效性怎么验证?

怎么才能画出一根能发挥作用的趋势线呢?这是很多投资者追求的目标。其实要趋势线能发挥作用,我们在画它的时候就要进行一些验证,将通过了验证的趋势线保留下来,那些没通过的就删除,这样得到能发挥作用的趋势线的概率就…

Springboot 共享车位系统小程序-计算机毕设 附源码93439

Springboot 共享车位系统小程序 摘 要 在信息飞速发展的今天,网络已成为人们重要的信息交流平台。每天都有大量的农产品需要通过网络发布,为此,本人开发了一个基于springboot共享车位系统小程序。 对于本共享车位系统的设计来说,…

【深度学习驱动流体力学】剖析流体力学可视化paraview原理

目录 1.paraview版本2.配置过程检查插件库文件配置 ParaView 环境变量启动 ParaView 并检查插件3.可视化测试插件功能3.加载数据进行可视化第一步: 导入案例第二步:查看当前目录未更新前的内容第三步:使用 blockMesh 命令生成腔体案例的网格第四步:运行仿真icoFoam第五步:使用 …

牛拜克拉丝的wordpress免费企业模板

wordpress免费企业模板 挺简洁实用的wordpress免费企业模板,黄色模板搭建公司网站。 演示 https://www.wpniu.com/themes/40.html

E84-晶圆载具交接自动化

E84是一种通讯协议,它的核心作用在于为通讯传感器/设备的开发提供基础架构。 E84协议详细阐述了晶圆载具(如FOUP/POD等)在工厂自动化物料搬运系统(AMHS)与机台装载端口(LP)之间,如何…

X86+FPGA, NXP+FPGA:工控稳“固”之选 赋能CPCI/VPX智能轨交新变革

工业IPC在目前大时代背景下面临机遇,但挑战同样也不少。在轨道交通领域,工控机必须具备高可靠性和稳定性,能够在复杂且严苛的工作环境中长时间无故障运行;需要满足严格的实时性和响应性能要求,确保能够迅速准确地处理传感器信号和…

4K高质量视频素材库,剪辑必备

找免费4K 高质量视频素材,就上这8个网站,剪辑必备,赶紧收藏吧! 1、baotu 【实拍视频】免费下载_实拍视频素材​ibaotu.com/shipin/7-5026-0-0-0-1.html?spmzhkolws​编辑 国内高质量素材网站,涵盖设计、新媒体、视频…

语言模型测试系列【10】

一个巧合,又测到了新的区别,以下是关于python代码生成的测试效果。 语言模型 文心一言讯飞星火通义千问2.5豆包360智脑百小应腾讯元宝KimiC知道商量智谱清言 这次的测试问题来源于**智谱AI开放平台**的介绍,正好有个python生成的效果说明…

qt 一个可以拖拽的矩形

1.概要 2.代码 2.1 mycotrl.h #ifndef MYCOTRL_H #define MYCOTRL_H#include <QWidget> #include <QMouseEvent>class MyCotrl: public QWidget {Q_OBJECT public://MyCotrl();MyCotrl(QWidget *parent nullptr); protected:void paintEvent(QPaintEvent *even…

Offset Explorer 连接SASL PLAIN鉴权的Kafka

1、填写Kafka信息 2、配置鉴权信息 Security 选择 SASL PLAINTEXT JAAS Config 配置账号密码 org.apache.kafka.common.security.plain.PlainLoginModule required username"账号"password"密码";

交叉注意力一脚踹进医学图像分割!新成果精度、效率表现SOTA

为解决传统方法的局限性&#xff0c;研究者们提出了将交叉注意力机制应用于医学图像分割。 交叉注意力机制能更有效地整合来自不同模态/尺度的特征&#xff0c;让模型同时捕捉全局和局部信息&#xff0c;加速学习并减少干扰。这样不仅可以提高分割的精度&#xff0c;还可以减少…

deepin 加入甲辰计划,共建 RISC-V 繁荣生态

内容来源&#xff1a;deepin&#xff08;深度&#xff09;社区 今日&#xff0c;deepin(深度)社区宣布正式加入甲辰计划&#xff0c;致力于在下一个丙辰年&#xff08;2036龙年&#xff09;之前&#xff0c;基于RISC-V实现从数据中心到桌面办公、从移动穿戴到智能物联网全信息产…

基于DPU的云原生裸金属网络解决方案

1. 方案背景和挑战 裸金属服务器是云上资源的重要部分&#xff0c;其网络需要与云上的虚拟机和容器互在同一个VPC下&#xff0c;并且能够像容器和虚拟机一样使用云的网络功能和能力。 传统的裸金属服务器使用开源的 OpenStack Ironic 组件&#xff0c;配合 OpenStack Neutron…

Go语言开发框架GoFly已集成数据可视化大屏开发功能,让开发者只专注业务开发,本文指导大家如何使用

前言 框架提供数据大屏开发基础&#xff0c;是考虑当前市场软件应用有一大部分是需要把业务数据做出大屏&#xff0c;很多政府项目对大屏需求特别高&#xff0c;还有生产企业项目也对大屏有需求&#xff0c;没有提供基础规范的后台框架&#xff0c;在开发大屏需要很多时间去基…

MySQL数据库初体验+数据库管理(其一)

【1】 操作系统介绍&#xff1a; Linux操作系统有 RedHat CentOS Debian Ubuntu OpenSUSE 信创标准 国产系统 &#xff1a; 华为&#xff08;欧拉&#xff09; 阿里&#xff08;龙蜥&#xff09; 腾讯 &#xff08;tencentOS&#xff09; 麒麟&#xf…

媒体访谈 | 广告变现痛点有新解,俄罗斯市场成大热门?

今年一季度&#xff0c;中国自主研发游戏在海外市场实际销售收入达到了40.75亿美元&#xff0c;环比和同比均实现了超过5%的增长&#xff0c;出海&#xff0c;仍是游戏产品近些年来最主要的发展模式之一。 当今的市场环境正经历一系列深刻变革&#xff0c;移动游戏广告市场呈现…

npm语义化版本和版本运算符

版本号组成 一个完整的版本号&#xff0c;由三部分组成&#xff1a;主版本号&#xff08;major&#xff09;、次版本号(minor)、修订版本号(patch)&#xff0c;简称X.Y.Z&#xff0c;具体含义&#xff1a; 主版本号&#xff08;major&#xff09;&#xff1a;项目&#xff08…

【C++】类的六个默认成员函数

文章目录 类的六个默认成员函数一、构造函数二、析构函数三、拷贝构造函数四、赋值运算符重载五、const成员六、取地址及const取地址操作符重载 类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;称为空类。空类中真的什么都没有吗&#xff1f;并不是&#xff0c;…