【问题标题】:Spring Cloud Gateway 2.0.0.RELEASE:Unable to find GatewayFilterFactory with name HystrixSpring Cloud Gateway 2.0.0.RELEASE:找不到名称为 Hystrix 的 GatewayFilterFactory
【发布时间】:2019-01-09 20:55:06
【问题描述】:

application.properties:

spring.cloud.gateway.discovery.locator.enabled=true
logging.level.org.springframework.cloud.gateway=debug
spring.cloud.gateway.routes[0].uri=lb://BIZSERVICE-DEMO
spring.cloud.gateway.routes[0].predicates[0]=Path=/demo/**
spring.cloud.gateway.routes[0].filters[0].name=StripPrefix
spring.cloud.gateway.routes[0].filters[0].args.parts=1
spring.cloud.gateway.routes[0].filters[1].name=Hystrix
spring.cloud.gateway.routes[0].filters[1].args.name=fallbackcmd
spring.cloud.gateway.routes[0].filters[1].args.fallbackUri=forward:/fallback
hystrix.command.fallbackcmd.execution.isolation.thread.timeoutInMilliseconds=5000

当我运行网关服务时,访问http://.../demo/123,控制台报告:

2018-08-02 14:50:49.454 [reactor-http-nio-2] 错误 ipf.filter.ExceptionHandler - {timestamp=Thu Aug 02 14:50:49 CST 2018, 路径=/demo/demo/1,状态=500,错误=内部服务器错误, message=找不到名称为 Hystrix 的 GatewayFilterFactory, trace=java.lang.IllegalArgumentException: 找不到 名称为 Hystrix 的 GatewayFilterFactory 在 org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator.lambda$loadGatewayFilters$3(RouteDefinitionRouteLocator.java:142) 在 java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) 在 java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) 在 java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) 在

它的原因是什么,我可以做些什么来预防它?

【问题讨论】:

  • 您似乎没有提供足够的详细信息以便有人帮助您。您能否提供更多详细信息,说明您使用的插件、您之前尝试过的内容以及您的设置。
  • StripPrefix 文件有效,但Hystrix 文件可用,报告:找不到名称为Hystrix 的GatewayFilterFactory。我在源码中调试程序:公共类RouteDefinitionRouteLocator,发现hystrix过滤器不存在gatewayFilterFactories:SetPath、RequestHeaderToRequestUri、ModifyResponseBody、RemoveRequestHeader、RedirectTo、、ModifyRequestBody、SetResponseHeader、SecureHeaders、AddRequestParameter、AddResponseHeader、PreserveHostHeader、RewritePath、SetStatus、SetRequestHeader 、PrefixPath、Retry、AddRequestHeader、RemoveResponseHeader、SaveSession、、StripPrefix
  • 私有列表 loadGatewayFilters(String id, List filterDefinitions) { List filters = (List)filterDefinitions.stream().map((definition) -> { GatewayFilterFactory factory = (GatewayFilterFactory )this.gatewayFilterFactories.get(definition.getName()); if(factory == null) { throw new IllegalArgumentException("Unable to find GatewayFilterFactory with name " + definition.getName()); } debug:info: definition:" FilterDefinition{name='Hystrix',args={fallbackUri=forward:/fallback,name=fallbackcmd}}"

标签: spring cloud gateway hystrix


【解决方案1】:

也许,你应该使用这个依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>

不是这个
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 2020-04-20
    • 2020-11-05
    • 1970-01-01
    • 2021-11-14
    • 2019-01-21
    • 2018-08-09
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多