在使用RestTemplate進行負載均衡時,一般會結合Spring Cloud的服務發現和負載均衡組件進行配置。下面是一個簡單的配置示例:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
@Configuration
public class RestTemplateConfig {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
@RestController
public class MyController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/test")
public String test() {
ResponseEntity<String> response = restTemplate.getForEntity("http://my-service/api/test", String.class);
return response.getBody();
}
}
在上面的示例中,RestTemplate會通過服務發現組件找到名為"my-service"的服務實例,并進行負載均衡調用。當有多個實例時,RestTemplate會根據負載均衡算法選擇一個實例進行調用。