Spring Cloud Alibaba 2.2.2.RELEASE版本发布(解决sentinel1.8.0的问题、seata1.3.0、dubbo2.7.8等问题)

版本发布

历时4个月左右的等待,Spring Cloud Alibaba 2.2.2.RELEASE版本于9月12日正式发布

版本发布

功能增强

[Nacos发现]

NacosWatch更新本地元数据#1704
Nacos namingService支持动态切换#1698
为NamingService #1638添加破坏生命周期回调
添加NacosRegistrationCustomizer #1495
支持临时Nacos ServiceInstance #1488
[Nacos配置]

[Sidecar]

Sidecar健康检测优化#1686
[Sentinel]

RedisDataSourceProperties的masterId逻辑错误#1622

[RocketMQ]

使用AbstractMessageChannel.getInterceptors()替换ChannelInterceptorAware.getChannelInterceptors()

BUG修复

[Nacos Discovery]

修复NacosServiceDiscovery.hostToServiceInstance方法潜在的NullPointerException #1536
[Nacos Config]

解决了Nacos Config #1483的加载顺序问题
[Docs]

修复文档#1646上的代码问题
修复nacos-discovery-example自述文件#1511
更新nacos-config.adoc #1618
修复nacos-config.adoc #1484中的错误单词
[Sentinel]

RedisDataSourceProperties的masterId逻辑错误#1622

reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.IllegalArgumentException: Unable to find RoutePredicateFactory with name path Caused by: java.lang.IllegalArgumentException: Unable to find RoutePredicateFactory with name path at org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator.lookup(RouteDefinitionRouteLocator.java:264) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator.combinePredicates(RouteDefinitionRouteLocator.java:244) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator.convertToRoute(RouteDefinitionRouteLocator.java:169) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:100) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:478) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:413) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:693) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:569) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:953) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:161) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:86) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.Flux.subscribe(Flux.java:8186) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:418) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:267) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:225) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:363) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:161) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:86) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.Flux.subscribe(Flux.java:8186) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:418) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:267) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:225) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:363) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:161) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:86) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.Mono.subscribe(Mono.java:4110) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.Mono.subscribeWith(Mono.java:4216) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at reactor.core.publisher.Mono.subscribe(Mono.java:3942) ~[reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE] at org.springframework.cloud.gateway.route.CachingRouteLocator.onApplicationEvent(CachingRouteLocator.java:73) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at org.springframework.cloud.gateway.route.CachingRouteLocator.onApplicationEvent(CachingRouteLocator.java:35) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.cloud.gateway.route.RouteRefreshListener.reset(RouteRefreshListener.java:68) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at org.springframework.cloud.gateway.route.RouteRefreshListener.resetIfNeeded(RouteRefreshListener.java:63) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at org.springframework.cloud.gateway.route.RouteRefreshListener.onApplicationEvent(RouteRefreshListener.java:57) ~[spring-cloud-gateway-core-2.2.2.RELEASE.jar:2.2.2.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at com.alibaba.cloud.nacos.discovery.NacosWatch.nacosServicesWatch(NacosWatch.java:130) ~[spring-cloud-starter-alibaba-nacos-discovery-2.2.1.RELEASE.jar:2.2.1.RELEASE] at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_141] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_141] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_141] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_141] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_141] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_141] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
最新发布
09-20
Spring Cloud Gateway 2.2.2.RELEASE 中遇到 `Unable to find RoutePredicateFactory with name path` 错误,通常是由于配置问题或者依赖缺失导致的。以下是一些可能的解决方法: ### 检查配置大小写 在 Spring Cloud Gateway 中,路由断言工厂的名称是大小写敏感的。正确的名称应该是 `Path`,而不是 `path`。确保在配置文件中使用正确的大小写。例如,正确的配置如下: ```yaml spring: cloud: gateway: routes: - id: my_route uri: lb://my-service predicates: - Path=/my-path/** ``` ### 检查依赖 确保项目中包含了 Spring Cloud Gateway 的正确依赖。在 Maven 项目中,添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>2.2.2.RELEASE</version> </dependency> ``` 在 Gradle 项目中,添加以下依赖: ```groovy implementation &#39;org.springframework.cloud:spring-cloud-starter-gateway:2.2.2.RELEASE&#39; ``` ### 检查 Spring Cloud 版本兼容性 确保 Spring Cloud Gateway 版本与其他 Spring Cloud 组件版本兼容。可以参考 Spring Cloud 的官方文档来选择合适的版本组合。 ### 检查类路径 确保没有其他库或者配置冲突导致 `PathRoutePredicateFactory` 无法被正确加载。可以检查类路径中是否存在重复的依赖或者配置文件。 ### 代码示例 以下是一个完整的 Spring Boot 项目示例,展示了如何正确配置 Spring Cloud Gateway 的路由: #### pom.xml ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>2.2.2.RELEASE</version> </dependency> </dependencies> ``` #### application.yml ```yaml spring: cloud: gateway: routes: - id: example_route uri: http://example.com predicates: - Path=/example/** ``` 通过以上步骤,应该可以解决 `Unable to find RoutePredicateFactory with name path` 错误。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值