给企业做网站如何定价/江西网络推广seo
思路:可以将服务消费者调用服务提供者的地址改成服务名称,不必硬编码成ip 地址了,也不用使用DiscoveryClient 类
一, 将RestTemplate类引入注解@LoadBalanced
@SpringBootApplication
@EntityScan("com.zjk.order.entity")
@EnableEurekaClient
public class OrderApplication {@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(OrderApplication.class,args);}
}
@LoadBalanced
二,服务消费者使用服务提供者的服务名称请求
/*** 基于ribbon 的服务调用,使用服务提供者的服务名称* @param Id* @return*/@GetMapping(value = "/findByIdByRibbon/{Id}")public TbProduct findByIdByRibbon(@PathVariable Long Id){try {List<ServiceInstance> instances = discoveryClient.getInstances("service-product");ServiceInstance serviceInstance = instances.get(0);TbProduct tbProduct = restTemplate.getForEntity("http://service-product/product/{Id}", TbProduct.class,Id).getBody();return tbProduct;}catch (Exception e){e.printStackTrace();}return null;}
TbProduct tbProduct = restTemplate.getForEntity("http://service-product/product/{Id}", TbProduct.class,Id).getBody();
大家可以看出来,我们可以直接使用服务提供者的服务名称请求
其实,ribbon 最重要的作用是负载均衡