springboot中nacos动态路由如何配置
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍springboot中nacos动态路由如何配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!nacos动态路由的配置首先。。。我自己有个服务器。在无聊之时写的
千家信息网最后更新 2025年01月19日springboot中nacos动态路由如何配置
这篇文章主要介绍springboot中nacos动态路由如何配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
nacos动态路由的配置
首先。。。
我自己有个服务器。在无聊之时写的代码,主要是通过网关来调用接口所以有了下面的代码。
1.作为一个动态路由维护管理的类
@Servicepublic class DynamicRouteServiceImpl implements ApplicationEventPublisherAware { /** * */ @Autowired private RouteDefinitionWriter routeDefinitionWriter; private ApplicationEventPublisher publisher; /** * 增加路由 * @param definition * @return */ public String add(RouteDefinition definition) { routeDefinitionWriter.save(Mono.just(definition)).subscribe(); this.publisher.publishEvent(new RefreshRoutesEvent(this)); return "success"; } /** * 更新路由 * @param definition * @return */ public String update(RouteDefinition definition) { try { this.routeDefinitionWriter.delete(Mono.just(definition.getId())); } catch (Exception e) { return "update fail,not find route routeId: "+definition.getId(); } try { routeDefinitionWriter.save(Mono.just(definition)).subscribe(); this.publisher.publishEvent(new RefreshRoutesEvent(this)); return "success"; } catch (Exception e) { return "update route fail"; } } /** * 删除路由 * @param id * @return */ public String delete(String id) { try { this.routeDefinitionWriter.delete(Mono.just(id)); return "delete success"; } catch (Exception e) { e.printStackTrace(); return "delete fail"; } } @Override public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { this.publisher = applicationEventPublisher; }
2.基于Nacos动态配置路由服务
@Componentpublic class DynamicRouteServiceImplByNacos implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(DynamicRouteServiceImplByNacos.class); @Autowired private DynamicRouteServiceImpl dynamicRouteService; @Value("${spring.cloud.nacos.discovery.server-addr}") private String address; @Value("${config.dataId}") private String dataId; @Value("${config.groupId}") private String groupId; @Value("${config.timeout}") private Long timeout; /* @Value("${config.ignore}") private String ignore;*/ /** * 监听Nacos Server下发的动态路由配置 */ public void dynamicRouteByNacosListener() { try { ConfigService configService = NacosFactory.createConfigService(address); configService.addListener(dataId, groupId, new Listener() { @Override public void receiveConfigInfo(String configInfo) { try { logger.info("================Nacos 配置中心路由配置信息已修改================\n" + configInfo + "\n\n"); Listlist = JSON.parseArray(configInfo, RouteDefinition.class); list.forEach(definition -> { dynamicRouteService.update(definition); }); } catch (Exception e) { e.printStackTrace(); } } @Override public Executor getExecutor() { return null; } }); /*configService.addListener(ignore, groupId, new Listener() { @Override public void receiveConfigInfo(String configInfo) { try { logger.info("================Nacos 配置中心忽略URL配置已修改================\n" + configInfo + "\n\n"); logger.info("\n" + configInfo + "\n\n"); List ignoreList = JSON.parseArray(configInfo, String.class); IgnoreRouteConfig.setIgnoreRouteArr(ignoreList); } catch (Exception e) { e.printStackTrace(); } } @Override public Executor getExecutor() { return null; } });*/ } catch (Exception e) { e.printStackTrace(); } } @Override public void run(String... args) throws Exception { dynamicRouteByNacosListener(); }}
3.yml配置
4. nacos网关配置
5.最后:我建的是
父子工程两个服务发到服务器后 注意注意注意!!!:一定要开启防火墙,登上阿里云自己的服务增加端口,然后再linux中也要增加端口 linux防火墙相关命令
删除 firewall-cmd --zone= public --remove-port=80/tcp --permanent
开放 firewall-cmd --zone=public --add-port=1935/tcp --permanent
查看状态 systemctl status firewalld
启动 systemctl start firewalld
查看已开启端口 firewall-cmd --list-ports
重启 firewall-cmd --reload
yml配置文件中 有一个这个端口 这个也要在阿里云上面还有服务器开启
这个就是接口访问时的网关端口号
Springboot配置Nacos出现的问题
报错信息
java.lang.ClassNotFoundException:org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata
由于当前Nacos版本还不支持Springboot 2.4.+ 的版本,所以需要降一个版本 为2.3.+
具体如下
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@1f89ab83] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:762) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:567) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:144) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:212) ~[spring-cloud-context-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:117) ~[spring-cloud-context-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:74) ~[spring-cloud-context-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.4.5.jar:2.4.5] at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) ~[na:na] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:375) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.5.jar:2.4.5] at com.lenyuqin.product.ProductApplication.main(ProductApplication.java:14) ~[classes/:na]Caused by: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@1f89ab83] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:321) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:232) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.findLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:210) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(InitDestroyAnnotationBeanPostProcessor.java:149) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(CommonAnnotationBeanPostProcessor.java:294) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1098) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576) ~[spring-beans-5.3.6.jar:5.3.6] ... 31 common frames omittedCaused by: java.lang.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na] at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3167) ~[na:na] at java.base/java.lang.Class.getDeclaredMethods(Class.java:2310) ~[na:na] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.6.jar:5.3.6] ... 38 common frames omittedCaused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na] ... 42 common frames omitted
以上是"springboot中nacos动态路由如何配置"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
配置
路由
动态
服务
端口
服务器
版本
网关
代码
信息
内容
接口
篇文章
防火墙
阿里
防火
无聊
两个
价值
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全技术支持名单
网络安全宣传周开幕式视频
软件开发工具怎么安装
宝德服务器支持热插拔吗
phpcms调用数据库
突出抓好网络安全
溢出隐藏软件开发
完善业绩数据库
网络安全组组员
软件开发小程序销售发圈文案
三级网络技术考试
多媒体通信网络技术总结
升级系统后显示服务器无法使用
辽宁软件开发价钱
郑州软件开发的公司哪家好
数据库实验报告总结
猴子视频软件开发
南京软件开发定制公司有哪些
公安如何应对网络安全问题
网络安全板块怎样做手抄报
阿里云服务器名称
数据库帐户
苏州工控软件开发定制
网络安全项目 内容
传说对决为什么服务器登不上
网管的网络安全管理报告
自考 软件开发工具试题
网络安全宣传周主题团日活动
昆山网络安全普法宣传片
实习日志30篇软件开发