更改netflix功能区的端口号

问题描述 投票:0回答:1

我有两个服务,一个运行在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不工作。

spring spring-boot spring-cloud netflix-eureka netflix-ribbon
1个回答
0
投票

丑陋,但对我来说是可行的。

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.