Java eureka ribbon集成-无法列出服务器

Java eureka ribbon集成-无法列出服务器,java,spring-boot,netflix-eureka,netflix-ribbon,Java,Spring Boot,Netflix Eureka,Netflix Ribbon,当我尝试执行以下使用ribbon并尝试从eureka获取服务器列表的代码时,出现以下异常 例外情况 代码 该服务是一个使用eureka客户端的Spring Boot(不使用Spring Cloud)应用程序。属性: eureka-client.properties 该服务已在本地部署的eureka中成功注册tomcat@port9080并且是可发现的@http://localhost:9080/eureka/ 及http://localhost:9080/eureka/v2/apps/ 不使用S

当我尝试执行以下使用ribbon并尝试从eureka获取服务器列表的代码时,出现以下异常

例外情况 代码 该服务是一个使用eureka客户端的Spring Boot(不使用Spring Cloud)应用程序。属性:

eureka-client.properties 该服务已在本地部署的eureka中成功注册tomcat@port9080并且是可发现的@
http://localhost:9080/eureka/ 及http://localhost:9080/eureka/v2/apps/

不使用Spring Cloud在上述代码/配置中需要解决什么问题才能使用ribbon从eureka动态获取服务器列表?

以下内容非常有用。 这个问题由
1.正在更正服务和功能区的vipAddress配置
2.配置ribbon并将其注册为eureka客户端

1。vipAddress的更改

eureka-client.properties(服务) eureka.vipAddress=my.eureka.local

ribbon-client.properties origin.ribbon.DeploymentContextBasedVipAddresses=my.eureka.local

2。将ribbon注册为eureka客户端的更改

publicstaticvoidmain(字符串[]args)引发异常{
ConfigurationManager.loadPropertiesFromResources(“ribbon client.properties”);
**InstanceInfo InstanceInfo=new eurekanconfigbasedInstanceInfo提供程序(instanceConfig.get();
applicationInfoManager=新的applicationInfoManager(instanceConfig,instanceInfo);
eurekaClient=newdiscoveryclient(applicationInfoManager,clientConfig)**
RestClient客户机=(RestClient)ClientFactory.getNamedClient(“origin”);
HttpRequest请求=HttpRequest.newBuilder().uri(新uri(“/serviceContext/api/v1/”).build();
对于(int i=0;i<20;i++){
HttpResponse response=client.executeWithLoadBalancer(请求);
}
}
3122 [main] WARN com.netflix.loadbalancer.RoundRobinRule - No up servers available from load balancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=origin,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:DiscoveryEnabledNIWSServerList:; clientName:origin; Effective vipAddresses:localhost; isSecure:false; datacenter:null
Exception in thread "main" com.netflix.client.ClientException: LoadBalancer returned null Server for :origin
    at com.netflix.client.LoadBalancerContext.computeFinalUriWithLoadBalancer(LoadBalancerContext.java:418)
    at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:166)
    at com.netflix.zuul.RibbonTest.main(RibbonTest.java:23)
public static void main(String[] args) throws Exception {
    ConfigurationManager.loadPropertiesFromResources("ribbon-client.properties");
    RestClient client = (RestClient) ClientFactory.getNamedClient("origin");          
    HttpRequest request = HttpRequest.newBuilder().uri(new URI("/serviceContext/api/v1/")).build(); 
    for (int i = 0; i < 20; i++)  {
        HttpResponse response = client.executeWithLoadBalancer(request); 
    }
}
origin.ribbon.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
#also tried unsuccessfully with localhost:8091, localhost:8091/serviceContext
origin.ribbon.DeploymentContextBasedVipAddresses=localhost
eureka.registration.enabled=true
eureka.preferSameZone=true
eureka.shouldUseDns=false
eureka.serviceUrl.default=http://localhost:9080/eureka/v2/
eureka.region=default
eureka.name=service-Eureka
eureka.vipAddress=localhost
eureka.port=8091
eureka.instanceId=CHNSHL119363L
public static void main(String[] args) throws Exception {
    ConfigurationManager.loadPropertiesFromResources("ribbon-client.properties");

    **InstanceInfo instanceInfo = new EurekaConfigBasedInstanceInfoProvider(instanceConfig).get();
    applicationInfoManager = new ApplicationInfoManager(instanceConfig, instanceInfo);
    eurekaClient = new DiscoveryClient(applicationInfoManager, clientConfig);**

    RestClient client = (RestClient) ClientFactory.getNamedClient("origin");          
    HttpRequest request = HttpRequest.newBuilder().uri(new URI("/serviceContext/api/v1/")).build(); 
    for (int i = 0; i < 20; i++)  {
                HttpResponse response = client.executeWithLoadBalancer(request); 
    }
}