我有两个服务,一个运行在8001端口,并在eureka服务器中注册,另一个运行在8002端口,但在eureka中不存在。其中一个运行在8001端口,并且在eureka服务器中注册,另一个运行在8002端口,并且在eureka中不存在。我想在我的本地ribbon客户端中把8001端口改为8002。我已经创建了
public class LocalProxy <T extends DiscoveryEnabledServer> implements ServerListFilter<T>
有办法
public List<T> getFilteredListOfServers(List<T> servers)
但我不知道如何改变端口。DiscoveryEnabledServer.setPort不工作。
丑陋,但对我来说是可行的。
private void addProxyRoute(List<T> servers) {
DiscoveryEnabledServer service = findFirst(servers,
s -> "service1".equalsIgnoreCase(s.getInstanceInfo().getAppName()));
if (service == null) return;
IClientConfig clientConfig = new DefaultClientConfigImpl();
DomainExtractingServerList list =
new DomainExtractingServerList(createServer(service.getInstanceInfo()), clientConfig, true);
servers.addAll((Collection<? extends T>) list.getUpdatedListOfServers());
servers.remove(service);
}
private StaticServerList createServer(InstanceInfo app) {
DiscoveryEnabledServer server = new DiscoveryEnabledServer(InstanceInfo.Builder.newBuilder()
.setAppName("service1")
.setPort(8002)
.setHostName(app.getHostName())
.setMetadata(new HashMap<>())
.build(), false, true);
server.setAlive(true);
server.setReadyToServe(true);
return new StaticServerList(server);
}