七、SpringCloud之RestTemplate的三种使用方式
一、简介1、应用通信方式:RPC、HTTP Dubbo:RPCSpringCloud:HTTP RestFul2、SpringCloud中服务间两种restful调用方式RestTemplateFeign3、RestTemplate:Spring提供的用于访问Rest服务的客户端一个Http客户端,属于客户端发现,负载均衡是软负载,客户端会向服务器,比如EurekaSe...
·
一、简介
1、应用通信方式:RPC、HTTP
- Dubbo:RPC
- SpringCloud:HTTP RestFul
2、SpringCloud中服务间两种restful调用方式
- RestTemplate
- Feign
3、RestTemplate:Spring提供的用于访问Rest服务的客户端
一个Http客户端,属于客户端发现,负载均衡是软负载,客户端会向服务器,比如EurekaServer,拉取已注册的可用服务信息,然后根据负载均衡策略直接命令哪台服务器发送请求,整个过程都是在客户端完成的,并不需要服务器的参与。
二、RestTemplate的三种使用方式
ServerController
@RestController
public class ServerController {
@GetMapping("/msg")
public String msg(){
return "this is product msg";
}
}
ClientController
@RestController
@Slf4j
public class ClientController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getProductMsg")
public String msg(){
//1.第一种方式(直接使用restTemplate,url写死)
// RestTemplate restTemplate = new RestTemplate();
// String response = restTemplate.getForObject("http://localhost:8888/msg", String.class);
//2.弟二种方式(利用loadBalancerClient通过应用名获取url,然后再使用直接使用restTemplate)
// ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
// String url = String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort())+"/msg";
// RestTemplate restTemplate = new RestTemplate();
// String response = restTemplate.getForObject(url, String.class);
//
//3.弟二种方式(利用@LoadBalanced,可在restTemplate里使用应用名字)
String response = restTemplate.getForObject("http://PRODUCT/msg", String.class);
log.info("response={}",response);
return response;
}
}
Config
@Component
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
更多推荐
已为社区贡献4条内容
所有评论(0)