Spring cloud Gateaway : Unable to find GatewayFilterFactory with name RequestRateLimiter

2022-07-05 14:28:23

承接上文《RedisTemplateConfig sentinel(哨兵模式) cluster(集群模式) 一键配置切换代码》 ,写一下之前遇到过的一个错误,也方便大家遇见同样错误时借鉴一下

首先来看一下配置redis sentinel redisConnectionFactory 的代码

@Bean("redisConnectionFactory")
	@ConditionalOnProperty(value = "spring.redis.mode",havingValue = "sentinel")
	public RedisConnectionFactory redisConnectionFactory(@Qualifier("poolConfig") GenericObjectPoolConfig config,
									RedisSentinelConfiguration redisConfig) {//注意传入的对象名和类型RedisSentinelConfiguration
		LettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(config).build();
		return new LettuceConnectionFactory(redisConfig, clientConfiguration);
	}

可以忽略

@ConditionalOnProperty(value = "spring.redis.mode",havingValue = "sentinel")

这个是用来根据nacos 配置判断自动注入cluster 模式还是sentinel 模式的,然后启动gateaway 报如下错误

 然后跟一下代码

既然是

RouteDefinitionRouteLocator 类报错那就直接看报错方法 发现一共32个factory,确实没有RequestRateLimiter 的factory

 直接说一下我的解决方式,其实也是随便改完之后就好用了,还没有进行跟踪

下面看看我是如何解决的

对,你看的没错,由原来的返回

redisConnectionFactory 接口变为返回实现类就ok了,然后再看下factorys

变为了33个factory 并且以及有了RequestRateLimiter

按理说返回接口与实现其实应该一样的,等以后有时间了再重新跟踪一下这个问题

  • 作者:峡谷电光马仔
  • 原文链接:https://blog.csdn.net/madness1010/article/details/122359354
    更新时间:2022-07-05 14:28:23