RestTemplateを使用したサービス呼び出しのいくつかの方法
3525 ワード
まずMSGというサービスで簡単な方法を定義します
httpclientのほかにRestTemplate(RestTemplateはSpringが提供するRestサービスにアクセスするためのクライアント)を使用するには、別のサービスでこのサービスを呼び出す方法が必要です.
1つ目の方法は、urlと戻りタイプを指定するだけで呼び出すことができますが、urlは書き込みが死んでいて、非常に不便です.
私たちのサービスに複数のURLがある場合、第1の方法は間違いなくだめなので、第2の方法はSpring Cloudが提供するLoadBalancerClientを使用します.
3つ目の方法は、まずRestTemplateをbeanに構成するために注釈を使用することができます.@LoadBalancedは負荷等化の注釈をオンにします.
そしてこのRestTemplateを呼び出しに注入します
転載先:https://www.cnblogs.com/skychmz/p/11503201.html
@RestController
public class ServerController {
@GetMapping("/msg")
public String msg() {
return "this is a msg";
}
}
httpclientのほかにRestTemplate(RestTemplateはSpringが提供するRestサービスにアクセスするためのクライアント)を使用するには、別のサービスでこのサービスを呼び出す方法が必要です.
1つ目の方法は、urlと戻りタイプを指定するだけで呼び出すことができますが、urlは書き込みが死んでいて、非常に不便です.
@GetMapping("/getMsg")
public String getMsg(){
RestTemplate restTemplate=new RestTemplate();
String response=restTemplate.getForObject("http://localhost:8080/msg",String.class);
return response;
}
私たちのサービスに複数のURLがある場合、第1の方法は間違いなくだめなので、第2の方法はSpring Cloudが提供するLoadBalancerClientを使用します.
@GetMapping("/getMsg")
public String getMsg(){
RestTemplate restTemplate=new RestTemplate();
ServiceInstance serviceInstance=loadBalancerClient.choose("MSG");
String url=String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort());
String response=restTemplate.getForObject(url,String.class);
return response;
}
3つ目の方法は、まずRestTemplateをbeanに構成するために注釈を使用することができます.@LoadBalancedは負荷等化の注釈をオンにします.
@Component
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
そしてこのRestTemplateを呼び出しに注入します
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getMsg")
public String getMsg(){
String response=restTemplate.getForObject("http://MSG/msg",String.class);
return response;
}
転載先:https://www.cnblogs.com/skychmz/p/11503201.html