我所做的是子類SimpleRouteLocator
類用我自己的RouteLocator
類。下面是我所做的例子:
public class RouteLocator extends SimpleRouteLocator implements RefreshableRouteLocator {
@Autowired
private ZuulHandlerMapping zuulHandlerMapping;
private Map<String, ZuulRoute> routes = new ConcurrentHashMap<>();
public RouteLocator(TaskExecutor executor, String servletPath, ZuulProperties properties) {
super(serveletPath, properties);
executor.execute(new ServiceWatcher());
}
@Override
public Map<String, ZuulRoute> locateRoutes() {
return this.routes;
}
@Override void refresh() {
this.doRefresh();
}
private class ServiceWatcher implements Runnable {
@Override
public void run(){
// Add your routes to this.routes here.
ZuulRoute route1 = new ZuulRoute("/somePath", "http://someResourceUrl:8080");
ZuulRoute route2 = new ZuulRoute("/someOtherPath", "some-service-id");
routes.put("/somePath", route1);
routes.put("/someOtherPath", route2);
zuulHandlerMapping.setDirty(true);
}
}
}
我不太確定的時候,因爲在我的實際代碼的ServiceWatcher
被調用周圍Kubernetes Watcher
的ServiceWatcher
包裝(因爲我在OpenShift環境中運行Zuul)但是這應該提供如何入門的要點。
你好@Gerardo,你已經解決了這個問題嗎?謝謝 –