Ribbon整合Eureka,出现 No instances available for XXX 异常

时间:2025-03-17 07:24:57

请观察这里的片段有没有问题?

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Autowired
    private RestTemplate restTemplate;
    
    @Autowired
    private LoadBalancerClient loadBalancerClient;
    
    @RequestMapping(value = "/hi")
    @ResponseBody
    public String hi() {
        ServiceInstance instance = ("HELLO");
        URI helloUri = (("http://%s:%s/hello", (), ()));
        ("Target service uri =  "+());
        return (helloUri,String.class);
    }

实际上,hi请求映射方法存在问题;问题是 因为  LoadBalancedClient  这里的 choose 根据 Eureka注册的服务名(ServiceId == ) 命中一个服务提供者;这里就不能使用 加了 LoadBalanced注解的RestTemplate对象了,因为会根据 host 去eureka查找服务提供者,这样就会抛异常 :No instances available for  XXX  ,也就是找不到指定的服务ID拉

 

可以使用2中方式:

LoadBalancerClient 进行手动的http请求;Ribbon集成了Apache HttpClient 、 OkHttp请求客户端使用;怎么使用自己琢磨去吧。。。
ribbon:
  okhttp:
    enabled: true 
  restclient:
    enabled: true

 

mmp,废了3个小时左右,?