【发布时间】:2018-09-05 08:20:23
【问题描述】:
我正在做一项工作,通过使用以下代码在运行时将路由动态设置到 Spring Cloud Gateway 中,
@Autowired
@Qualifier("inMemoryRouteDefinitionRepository")
private RouteDefinitionWriter routeDefinitionWriter;
RouteDefinition routeDefinition = ...; // my own route
routeDefinitionWriter.save(Mono.just(routeDefinition)).subscribe();
this.publisher.publishEvent(new RefreshRoutesEvent(this));
无论里面的谓词和过滤器是否可用甚至存在,都可以成功添加路由。如果存在不存在谓词或过滤器的路由,则会发生异常。
问题是如何在运行时获取可用的谓词和过滤器列表,所以我可以检查传入的RouteDefinition是否有效。
到目前为止,我已经在 RouteDefinitionRouteLocator 类中发现了可用的谓词和过滤器列表,并且我可以自动装配它的一个实例。但这似乎不是解决问题的好方法。
@Autowired
@Qualifier("routeDefinitionRouteLocator")
private RouteDefinitionRouteLocator routeDefinitionRouteLocator;
有什么想法吗?非常感谢!!
【问题讨论】:
标签: dynamic filter predicate spring-cloud-gateway