【问题标题】:Change port number in netflix ribbon更改 netflix 功能区中的端口号
【发布时间】:2020-08-04 11:50:14
【问题描述】:

我有两个服务。一个运行在 8001 端口并在 eureka 服务器中注册,另一个运行在 8002 端口,并且在 eureka 中不存在。我想在本地功能区客户端中将端口 8001 更改为 8002。我已经创建了

public class LocalProxy <T extends DiscoveryEnabledServer> implements ServerListFilter<T> 

用方法

public List<T> getFilteredListOfServers(List<T> servers)

但我不知道如何更改端口。 DiscoveryEnabledServer.setPort 不起作用。

【问题讨论】:

  • 未注册的实例在哪里定义?
  • 它是 HTTP 请求拦截器。它监听其端口上的所有请求。此拦截器未在尤里卡中注册。在我的代码中,我调用 httр://myservice1/ 转换为类似这样的内容 httр://192.168.0.1:8001/ 我想将请求更改为我的拦截器 httр://192.168.0.1:8002/
  • 抱歉,我很难理解什么不起作用。

标签: spring spring-boot spring-cloud netflix-eureka netflix-ribbon


【解决方案1】:

丑陋,但对我有用。

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);
}

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 2017-01-02
    • 2017-07-27
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多