1、实现动态路由的关键是RouteDefinitionRepository接口,该接口存在一个默认实现(InMemoryRouteDefinitionRepository)
通过名字我们应该也知道该实现是将配置文件中配置的信息加载到内存中。因此无法实现动态路由。
2、如果想实现动态路由,我们可以参考默认实现,自己编写一个实现,代码如下:
import static java.util.Collections.synchronizedMap;
@Component
public class UnifiedRouteRepositoryImpl implements RouteDefinitionRepository {
public final Map routes =
synchronizedMap(new LinkedHashMap<>());
@Override
public Flux getRouteDefinitions() {
return Flux.fromIterable(routes.values());
}
@Override
public Mono save(Mono route) {
return route.flatMap( r -> {
routes.put(r.getId(), r);
return Mono.empty();
});
}
@Override
public Mono delete(Mono routeId) {
return routeId.flatMap(id -> {<