游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

SpringGateway集成Nacos实现动态路由配置

  通过SpringGateway集成Nacos实现配置管理,并且实现动态路由管理。
  一、创建testgateway项目,POM文件如下:modelVersion4。0。0modelVersionparentgroupIdcom。golte。parentgroupIdgolteparentartifactIdversion1。0。0versionparentgroupIdcom。golte。gatewaygroupIdgoltegatewayartifactIdversion0。0。1SNAPSHOTversionnamegoltegatewaynamedescriptionGatewayprojectforSpringBootdescriptionpropertiesjava。version1。8java。versionspring。cloud。versionHoxton。SR8spring。cloud。version2。2。3。RELEASEalibaba。cloud。versionfastjson。version1。2。73fastjson。versionpropertiesdependenciesdependencygroupIdorg。springframework。cloudgroupIdspringcloudstartergatewayartifactIddependencydependencygroupIdcom。alibaba。cloudgroupIdspringcloudstarteralibabanacosconfigartifactIddependencydependencygroupIdcom。alibaba。cloudgroupIdspringcloudstarteralibabanacosdiscoveryartifactIddependency!sentinel提供的gataway适配器dependencygroupIdcom。alibaba。cloudgroupIdspringcloudalibabasentinelgatewayartifactIddependency!对外暴露SpringBoot监控指标dependencygroupIdorg。springframework。bootgroupIdspringbootstarteractuatorartifactIddependencydependencygroupIdorg。springframework。bootgroupIdspringbootstartertestartifactIdscopetestscopeexclusionsexclusiongroupIdorg。junit。vintagegroupIdjunitvintageengineartifactIdexclusionexclusionsdependencydependencygroupIdcom。alibabagroupIdfastjsonartifactIdversion{fastjson。version}versiondependencydependenciesdependencyManagementdependenciesdependencygroupIdorg。springframework。cloudgroupIdspringclouddependenciesartifactIdversion{spring。cloud。version}versiontypepomtypescopeimportscopedependencydependencygroupIdcom。alibaba。cloudgroupIdspringcloudalibabadependenciesartifactIdversion{alibaba。cloud。version}versiontypepomtypescopeimportscopedependencydependenciesdependencyManagementbuildfinalNametestgatewayfinalNamepluginsplugingroupIdorg。springframework。bootgroupIdspringbootmavenpluginartifactIdpluginpluginsbuildproject
  二、创建项目配置文件bootstrap。ymlserver:port:80spring:profiles:active:devapplication:name:testgatewaycloud:nacos:config:namespace:{spring。profiles。active}serveraddr:http:127。0。0。1:8848extensionconfigs〔0〕:dataid:testgatewaycommons。ymlgroup:DEFAULTGROUPrefresh:trueNacos动态路由配置,json格式nacos:gateway:route:config:dataid:gatewaydynamicroutergroup:DEFAULTGROUP
  a、testgatewaycommons。yml内容如下:sentinel相关配置spring:cloud:sentinel:transport:dashboard:http:127。0。0。1:8080port:8719scg:fallback:mode:responseresponsestatus:455responsebody:error!nacos:discovery:namespace:devserveraddr:127。0。0。1:8848management:endpoints:web:exposure:include:
  三、创建网关配置类GatewayConfig。javaimportorg。springframework。beans。factory。annotation。Value;importorg。springframework。context。annotation。Configuration;ConfigurationpublicclassGatewayConfig{publicstaticfinallongDEFAULTTIMEOUT30000;publicstaticStringNACOSSERVERADDR;publicstaticStringNACOSNAMESPACE;publicstaticStringNACOSROUTEDATAID;publicstaticStringNACOSROUTEGROUP;Value({spring。cloud。nacos。discovery。serveraddr})publicvoidsetNacosServerAddr(StringnacosServerAddr){NACOSSERVERADDRnacosServerAddr;}Value({spring。cloud。nacos。discovery。namespace})publicvoidsetNacosNamespace(StringnacosNamespace){NACOSNAMESPACEnacosNamespace;}Value({nacos。gateway。route。config。dataid})publicvoidsetNacosRouteDataId(StringnacosRouteDataId){NACOSROUTEDATAIDnacosRouteDataId;}Value({nacos。gateway。route。config。group})publicvoidsetNacosRouteGroup(StringnacosRouteGroup){NACOSROUTEGROUPnacosRouteGroup;}}
  四、创建动态路由服务DynamicRouteServiceImpl。javaimportorg。springframework。beans。factory。annotation。Autowired;importorg。springframework。cloud。gateway。event。RefreshRoutesEvent;importorg。springframework。cloud。gateway。route。RouteDefinition;importorg。springframework。cloud。gateway。route。RouteDefinitionWriter;importorg。springframework。context。ApplicationEventPublisher;importorg。springframework。context。ApplicationEventPublisherAware;importorg。springframework。stereotype。Service;importlombok。extern。slf4j。Slf4j;importreactor。core。publisher。Mono;动态更新路由网关service1)实现一个Spring提供的事宜推送接口ApplicationEventPublisherAware2)提供动态路由的基础方式,可通过获取bean操作该类的方式。该类提供新增路由、更新路由、删除路由,然后实现公布的功效。Slf4jServicepublicclassDynamicRouteServiceImplimplementsApplicationEventPublisherAware{AutowiredprivateRouteDefinitionWriterrouteDefinitionWriter;公布事宜AutowiredprivateApplicationEventPublisherpublisher;OverridepublicvoidsetApplicationEventPublisher(ApplicationEventPublisherapplicationEventPublisher){this。publisherapplicationEventPublisher;}删除路由paramidreturnpublicStringdelete(Stringid){try{log。info(gatewaydeleterouteid{},id);this。routeDefinitionWriter。delete(Mono。just(id));returndeletesuccess;}catch(Exceptione){returndeletefail;}}更新路由paramdefinitionreturnpublicStringupdate(RouteDefinitiondefinition){try{log。info(gatewayupdateroute{},definition);this。routeDefinitionWriter。delete(Mono。just(definition。getId()));}catch(Exceptione){returnupdatefail,notfindrouterouteId:definition。getId();}try{routeDefinitionWriter。save(Mono。just(definition))。subscribe();this。publisher。publishEvent(newRefreshRoutesEvent(this));returnsuccess;}catch(Exceptione){returnupdateroutefail;}}增添路由paramdefinitionreturnpublicStringadd(RouteDefinitiondefinition){log。info(gatewayaddroute{},definition);routeDefinitionWriter。save(Mono。just(definition))。subscribe();this。publisher。publishEvent(newRefreshRoutesEvent(this));returnsuccess;}}
  五、创建通过Nacos读取动态路由配置服务DynamicRouteServiceImplByNacos。javaimportjava。util。List;importjava。util。Properties;importjava。util。concurrent。Executor;importjavax。annotation。PostConstruct;importorg。springframework。beans。factory。annotation。Autowired;importorg。springframework。cloud。gateway。route。RouteDefinition;importorg。springframework。context。annotation。DependsOn;importorg。springframework。stereotype。Component;importcom。alibaba。fastjson。JSON;importcom。alibaba。nacos。api。NacosFactory;importcom。alibaba。nacos。api。config。ConfigService;importcom。alibaba。nacos。api。config。listener。Listener;importcom。alibaba。nacos。api。exception。NacosException;importlombok。extern。slf4j。Slf4j;通过nacos下发动态路由设置,监听Nacos中gatewayroute设置ComponentSlf4jDependsOn({gatewayConfig})依赖于gatewayConfigbeanpublicclassDynamicRouteServiceImplByNacos{AutowiredprivateDynamicRouteServiceImpldynamicRouteService;privateConfigServiceconfigService;PostConstructpublicvoidinit(){log。info(gatewayrouteinit。。。);try{configServiceinitConfigService();if(configServicenull){log。warn(initConfigServicefail);return;}StringconfigInfoconfigService。getConfig(GatewayConfig。NACOSROUTEDATAID,GatewayConfig。NACOSROUTEGROUP,GatewayConfig。DEFAULTTIMEOUT);log。info(获取网关当前设置:r{},configInfo);ListRouteDefinitiondefinitionListJSON。parseArray(configInfo,RouteDefinition。class);for(RouteDefinitiondefinition:definitionList){log。info(updateroute:{},definition。toString());dynamicRouteService。add(definition);}}catch(Exceptione){log。error(初始化网关路由时发生错误,e);}dynamicRouteByNacosListener(GatewayConfig。NACOSROUTEDATAID,GatewayConfig。NACOSROUTEGROUP);}监听Nacos下发的动态路由设置paramdataIdparamgrouppublicvoiddynamicRouteByNacosListener(StringdataId,Stringgroup){try{configService。addListener(dataId,group,newListener(){OverridepublicvoidreceiveConfigInfo(StringconfigInfo){log。info(举行网关更新:r{},configInfo);ListRouteDefinitiondefinitionListJSON。parseArray(configInfo,RouteDefinition。class);for(RouteDefinitiondefinition:definitionList){log。info(updateroute:{},definition。toString());dynamicRouteService。update(definition);}}OverridepublicExecutorgetExecutor(){log。info(getExecutorr);returnnull;}});}catch(NacosExceptione){log。error(从nacos吸收动态路由设置失足!!!,e);}}初始化网关路由nacosconfigreturnprivateConfigServiceinitConfigService(){try{PropertiespropertiesnewProperties();properties。setProperty(serverAddr,GatewayConfig。NACOSSERVERADDR);properties。setProperty(namespace,GatewayConfig。NACOSNAMESPACE);returnconfigServiceNacosFactory。createConfigService(properties);}catch(Exceptione){log。error(初始化网关路由时发生错误,e);returnnull;}}}
  六、配置动态路由配置文件gatewaydynamicrouter,内容如下:〔{id:useradminrouter,order:5,predicates:〔{args:{pattern:useradmin},name:Path}〕,filters:〔{name:StripPrefix,args:{genkey0:1}}〕,uri:lb:testuseradmin},{id:userapprouter,order:4,predicates:〔{args:{pattern:users},name:Path}〕,filters:〔{name:StripPrefix,args:{genkey0:1}}〕,uri:lb:testuserapp}〕
  通过以上步骤就完成SpringGateway集成Nacos实现动态路由配置功能。以后只要通过修改Nacos的配置文件就可以时间服务的动态上下线了。不需要再重启网关了。

三防手机就这么敞亮,AGMM7手机简评随着智能手机的普及,之前使用的按键手机渐渐退出了舞台,不过对于户外工作者,以及父母长辈来说,他们很喜欢这样的手机,因为操作简单好上手。在创新不断的当下,功能机也迎来了新的升级,……快报小米MIX4真机屏幕OPPO屏下摄像头iQOO8首发顶级荣耀X20手机配置曝光荣耀将于8月12日举行全球发布会,正式推出独立以来的首款高端旗舰产品荣耀Magic3。另外消息称,荣耀还将推出荣耀X20、荣耀平板V7Pro等其他新……小米12值不值得买?昨天去米boy之家摸了12和12破,跟手里的10放一起对比,感觉10可以再战半年,等12u。1、外观。12破跟10尺寸相近,宽度几乎一样,边框处理也差不多。12没想象中那……新东方转型培训父母?捞来捞去都是捞家长的钱双减政策落地,各大教培机构积极转型。近日,新东方在北京杭州等地推出素质教育成长中心,上线面向家长的优质父母智慧馆,包括家庭教育、育儿方法等5个板块。启信宝显示,新东方教育……从零开始学python之数据库的交互这篇文章主要介绍了Python与数据库的交互,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下MongoDB安装模块pipinst……马斯克被曝延迟披露Twitter持股违规获利近10亿元鞭牛士4月8日消息,据新浪科技消息,埃隆马斯克公布其买入大量Twitter股票的时间较监管规定晚了11天。6位法律和证券专家表示,这种疏忽帮着这位世界首富额外赚了1。56亿美元……5G智能手机推荐OnePlus一加8T手机好用吗?OnePlus一加8T5G智能手机12GB256GB青域65w充电很快半个小时充满,一加8T很良心,赠送的壳也是完美贴合,保护了摄像头,和机身,性价比高,系统简洁,没有广……互联网资本垄断的壁垒破除只是一个开始资本垄断会衍生出更多问题这些年你一定对这些话不陌生:我家狗都坐私人飞机的,一个亿只是小目标,我对钱不感兴趣很多人把这些当段子听,却没注意到,这些正是贫富差距的体现,不断激化着上……持续引领,华为发布绿色5G创新方向全球碳达峰、碳中和已成主流趋势,为了助力全球运营商绿色网络双碳行动计划的达成,2021年8月30日,在华为举办的无线首届媒体沙龙暨MBBF2021预沟通会上,华为发布了《绿色5……华为新机专利被曝光!MATE50系列或全球首发环绕屏设计华为P50系列已经发布,虽然缺少了5G,有些许遗憾,但顶级的影像系统和强悍的硬件实力仍然收获了一大批用户的青睐,仍然保持旗舰的水准。不管是华为的MATE系列、还是P系列多……从5499元跌至3899元,苹果新机发布在即,旧款iPhoniPhone12系列是在去年的10月份才发布的,但事实证明那只是特殊情况,种种爆料消息都显示今年的iPhone13系列将在9月份正式发布,要知道外媒关于苹果手机的爆料消息都挺准……AppleWatch新Series7将换上全新外观设计方正外距离AppleWatchSeries6发布已经约一年时间,若无意外新世代Series7便会在今年9月份的发布会上正式亮相。而先前其实也已经有相关情报传出,今回则是Youtube……
电动车三杰交付量洗牌小鹏大逆袭,蔚来掉队了【财报速递】造车新势力三家公司,最后一个发布四季度财报的是小鹏汽车。小鹏(XPEV。NYSE)3月28日晚间发布的财报显示,第四季度,总营收为85。56亿元,较2020年……抖音关于升级谣言专项治理的公告来源:抖音安全中心一直以来,抖音平台高度重视网络谣言的打击治理,建立了谣言发现、识别、打击全流程工作机制,开辟辟谣专区,深入联动权威机构、专业领域创作者开展辟谣工作。近期……618几款新机推荐,水果机建议避开,这几款安卓旗舰更香一些国产手机的发展一直被大家所关注,随着一年一度的618购物节的临近,通过手机平台可以看到很多手机资讯,对于想更换手机的用户来说,很多人都会交不少智商税,那么如何选择一款适合自己的……谁最记得你的生日?是我的母亲最记得我的生日。我来回答,我的个人体验是,最记得你生日的我想永远都是跟你有金钱来往的商家吧。就以我的亲身经历说一说,今天11月25日是我的生日,先生外出一……西门子出售智能交通业务,海信拟10亿美金接盘?行业内卷之下集西门子打包出售智能交通业务的谣言终究变成了现实。早在去年11月,西门子就宣布将旗下的ITS(智能交通系统)部门拆分为独立的公司。今年2月,西门子新任首席执行官罗兰布希表示……华为mate40pro和苹果13到底怎么选?从一个的普通消费者的层面来说,我个人是极力推荐iPhone13的,倒不是因为Mate40Pro不够好,而是从普通消费者的角度来说,还是iPhone13更适合。看到这里可能……微信专属输入法新一轮内测!张小龙并非为抢夺市场,是为保护用户中国经济周刊经济网讯据媒体报道,近期微信输入法又开启新一轮内测,获得内测资格的用户数量较此前更多。在2021年初的微信公开课上,张小龙曾透露将上线微信专属输入法,目的并非为了抢……特斯拉男车主手撕维权女车主都怪你害我变成特孝子大家好今天在刷抖音的时候突然看到有人发了一条四问特斯拉维权事主的视频之前车顶维权声势那么大这是反转了?我连忙点进了作者主页好家伙,这下……数字技术助力全球减贫来源:人民网人民日报短短几十年间,数字技术已在全球普及开来,许多国家正在快速布局数字基础设施。目前,移动宽带网络覆盖全球九成人口,不少国家已启动5G网络推广计划。截至9月……李佳琦,薇娅们带货越多,淘宝越危险今年的双十一基本落下帷幕,到了各家电商平台开始盘点的时刻。和往年的双十一不一样,在互联网强监管的背景下,整个行业少了往年的喧嚣,往年各种战报在各个媒体满天飞。今年则是在11号当……你的手机上有哪些想删却删不掉的软件?其实现在安卓手机内置软件的情况已经好很多了,除非是像相机、应用市场、用户中心这样必须的软件,大部分内置软件都可以删除。反倒是苹果iOS有很多预装软件无法卸载,虽然iOS10可以……元宇宙的点滴21、元宇宙的商业模式,可以借鉴美团王兴的四纵三横模式来思考;2、王兴的四纵三横模式是由四类可做的业务类型形成四条纵线,与三类技术特征形成三条横线,其中的交叉点就是具体的商……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网