springcloud-gateway include-expression 配置說明

在開發過程中遇到的一些配置問題,記錄下來以供參考
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 的的默認值是 “lb://”+serverId,即spring.cloud.gateway.routes[0].uri的值 ,使用的不同服務發現具體得到的ServiceInstance會不一致,比如eureka的支持
eurekaServiceInstance
這里提供了metadata,假設我們在配置文件中設置了對應值,那么這里就可以用
spring.cloud.gateway.discovery.locator.include-expression=metadata[xxx] == 1這種形式進行引用,比如線上服務通過給metadata文件添加版本號表示當前服務實例非穩定版本,不讓它對外提供服務。配合上springbus,springconfig 可以非常方面的進行調整

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35072.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35072.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35072.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

postman國內外競爭者及使用詳解分析

一、postman簡介 Postman 是一款廣泛使用的 API 開發和測試工具,適用于開發人員和測試人員。它提供了一個直觀的界面,用于發送 HTTP 請求、查看響應、創建和管理 API 測試用例,以及自動化 API 測試工作流程。以下是 Postman 的主要功能和特點…

linux的CP指令

實現 CP 指令 src 源文件 des 目標文件 執行流程: 打開源文件( src ) open 打開目標文件( des ) open 寫入目標文件 write 讀取 src 文件到緩存數組 read 關閉目標文件和源文件 close ./a.out src.c de…

開源網安參與編制的《代碼大模型安全風險防范能力要求及評估方法》正式發布

?代碼大模型在代碼生成、代碼翻譯、代碼補全、錯誤定位與修復、自動化測試等方面為研發人員帶來了極大便利的同時,也帶來了對安全風險防范能力的挑戰。基于此,中國信通院依托中國人工智能產業發展聯盟(AIIA),聯合開源…

chmod,chown命令

一.chmod命令 1.chmod命令的作用 我們使用chmod命令來修改文件和文件夾的權限信息(只有文件和文件夾的所屬用戶和root用戶可以修改該文件或文件夾的權限信息) 2.chmod命令的語法 chmod [-R] 我們將要賦予用戶/用戶組/其他用戶的權限 要修改的文件/文件…

SpringBoot實現定時任務的動態停止和更新

目錄 定時任務管理器定時任務的任務接口定時任務和定時任務結果的緩存對象定時任務使用姿勢 定時任務管理器 負責啟動一個定時任務、停止一個定時任務、更新一個定時任務 /*** 定時任務管理器* 1、創建并啟動一個定時任務* 2、停止一個定時任務* 3、更新一個定時任務*/ publi…

Mybatis-plus學習|性能分析插件、條件構造器、代碼自動生成器

性能分析插件 我們在平時的開發中,會遇到一些慢sql。測試!druid…. MP也提供性能分析插件,如果超過這個時間就停止運行! 1、導入插件 該插件只允許在開發和測試環境中使用,故先設置開發環境為開發模式 在MP配置類中注冊這個插件&#xff0…

【Python機器學習】數據表示和特征工程的一些概念

對于由浮點數組成的二維數據,其中每一列是描述數據點的連續特征。 對于很多應用來說,數據的收集方式并不是這樣,一種特別常見的特征類型就是分類特征,也叫離散特征,這種特征通常不是說數值。 分類特征和連續特征之間…

Python:淺談迭代器、生成器與協程的演化路徑

“人生苦短,我用Python”,雖然說大量數學和統計分析庫是一個重要優勢,但是歸根結底,Python的最大優勢就是三點: 但是通常一般來講,當扯到并發的時候,無論是多服務器、多進程、多線程、還是協程&…

C# SocketUDP服務器,組播

SocketUDP 自己即是服務器又是客戶端 ,在發消息只需要改成對方ip和端口號即可 前提對方必須開啟服務器 socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.107.72"), 8080)); 控件:Button,TextBox,RichTextBox 打開自己服務器 public…

【操作系統】信號處理與阻塞函數|時序競態問題

🔥博客主頁: 我要成為C領域大神🎥系列專欄:【C核心編程】 【計算機網絡】 【Linux編程】 【操作系統】 ??感謝大家點贊👍收藏?評論?? 本博客致力于知識分享,與更多的人進行學習交流 ? 關于阻塞函數和…

Windows環境部署MySQL_8.4.0 LTS的部署安裝、驗證連接以及卸載全過程實操手冊

前言: 什么是 MySQL MySQL 是一個關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬于Oracle 公司。MySQL 是一種關系型數據庫管理系統,關系型數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內&am…

secureCRT中使用python腳本自動化測試vela設備

利用vela設備自帶的wapi命令行,重復執行聯網斷網的命令,測試系統穩定性。 實現如下, # $language "python" # $interface "1.0"# This automatically generated script may need to be # edited in order to work co…

8.12 矢量圖層面要素單一符號使用七(隨機標記填充)

文章目錄 前言隨機標記填充(Random Marker Fill)QGis設置面符號為隨機標記填充(Random Marker Fill)二次開發代碼實現隨機標記填充(Random Marker Fill) 總結 前言 本章介紹矢量圖層線要素單一符號中使用隨…

分班查詢怎么發布?

在現代教育環境中,傳統的學生分班通知方式可能顯得有些過時和低效。通常,這些方式依賴于紙質通知單,這不僅需要大量的物理資源進行打印和分發,而且容易出錯,如丟失、錯誤分發或延遲。 幸運的是,現在有了更高…

掌握Perl并發:線程與進程編程全攻略

掌握Perl并發:線程與進程編程全攻略 引言 Perl作為一種功能強大的編程語言,提供了豐富的并發編程手段。無論是通過threads模塊實現的線程,還是通過fork系統調用產生的進程,Perl都能幫助開發者高效地處理多任務。本文將深入探討如…

解釋Java的垃圾回收機制以及垃圾回收器的工作原理。

Java的垃圾回收機制(Garbage Collection,GC)是Java虛擬機(JVM)的一個重要組成部分,它負責自動管理內存,確保內存泄漏和內存溢出錯誤不會發生。垃圾回收器(Garbage Collector&#xf…

心靈館咨詢系統小程序心理咨詢平臺聊天咨詢

心靈館咨詢系統小程序:解鎖你的心靈密碼 💖 心靈之旅的導航者 在繁忙的現代生活中,我們時常會面臨各種壓力與困惑。心靈館咨詢系統小程序,如同一位貼心的導航者,引領我們探索內心的世界,尋找真正的自我。 …

shell 腳本的部分指令和操作符

終端輸入兩個數,判斷兩數是否相等,如果不相等,判斷大小關系 2.已知網址www.hqyj.com,使用expr截取出www、hqyj、com,不能使用cut,不能出現數字

JavaWeb系列十九: jQuery的DOM操作 上

查找節點, 修改屬性 查找屬性節點: 查找到所需要的元素之后, 可以調用jQuery對象的attr()方法用來 設置/返回 它的各種屬性值 設置屬性值 $(“img”).attr(“width”, “300”);返回屬性值 $(“img”).attr(“width”); 創建節點 創建節點: 使用jQuery的工廠函數$(): $(html標…