provider
spring-lb-provider
@RequestMapping(value = "/call/{id}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public Police call(@PathVariable Integer id, HttpServletRequest request) {
Police p = new Police();
p.setId(id);
p.setName("angus");
p.setMessage(request.getRequestURL().toString());
return p;
}
consumer
@RestController
@Configuration
public class TestController {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
@GetMapping("/router")
@ResponseBody
public String router() {
RestTemplate tpl = getRestTemplate();
String json = tpl.getForObject("http://spring-lb-provider/call/1", String.class);
return json;
}
@Autowired
private LoadBalancerClient client;
@RequestMapping(value = "/lb", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ServiceInstance lb() {
ServiceInstance si = client.choose("spring-lb-provider");
return si;
}
@Autowired
private SpringClientFactory factory;
@RequestMapping(value = "/fa", method = RequestMethod.GET)
public String factory() {
ZoneAwareLoadBalancer lb = (ZoneAwareLoadBalancer)factory.getLoadBalancer("default");
System.out.println(lb.getRule().getClass().getName());
ZoneAwareLoadBalancer lb2 = (ZoneAwareLoadBalancer)factory.getLoadBalancer("spring-lb-provider");
System.out.println(lb2.getRule().getClass().getName());
return "";
}
}