Eureka添加负载均衡 @LoadBalanced//负载均衡 出错

原因:没有添加之前是通过url="http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/user/"+id;

@RestController
@RequestMapping(value = "consumer")

public class UserContrller {

    @Autowired
    private RestTemplate  restTemplate;
    //此对象用于向注册中心获得服务列表
    @Autowired
    private DiscoveryClient discoveryClient;
@RequestMapping("/{id}")
   public User findUserById(@PathVariable(value ="id") Integer  id){

    List<ServiceInstance> instanceList = discoveryClient.getInstances("user-provider");

    ServiceInstance serviceInstance = instanceList.get(0);
    URI uri= serviceInstance.getUri();
    System.out.println("uri="+uri);
    String  url="http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/user/"+id;
  return   restTemplate.getForObject(url,User.class);


}


}

 改成名称访问:

修改user-consumer的com.itheima.controller.UserController的调用方式,不再手动获取ip和端口,而是直接通过服务名称调用,代码如下:
@GetMapping(value = "/{id}")
public User queryById(@PathVariable(value = "id")Integer id){
    /*String url = "http://localhost:18081/user/find/"+id;
    return restTemplate.getForObject(url,User.class);*/
    //获取指定生产者的实例列表

   /* List<ServiceInstance> instances = discoveryClient.getInstances("user-provider");
    //获取第一个实例对象
    ServiceInstance instance = instances.get(0);
    String url = "http://"+instance.getHost()+":"+instance.getPort()+"/user/find/"+id;*/

    String url = "http://user-provider/user/find/"+id;
    return restTemplate.getForObject(url,User.class);
}
发布了221 篇原创文章 · 获赞 8 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/oDianZi1234567/article/details/102887352