package com.example.customer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class ServiceController {
@Autowired
private FeignSservice fs2;
@Autowired
private FeignService fs;
@Autowired
private RestTemplate rt;
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private DiscoveryClient discoveryClient;
@RequestMapping("/discover")
public Object getdiscover()
{
//loadBalancerClient.choose("service-producer").
//return loadBalancerClient.choose("service-producer").getUri().toString();
if(loadBalancerClient.choose("service-producer")==null)
{
return "服务不可用";
}
return loadBalancerClient.choose("service-producer");
}
@RequestMapping("/services")
public Object services()
{
return discoveryClient.getInstances("service-producer");
}
@RequestMapping("/call")
public String call() {
ServiceInstance serviceInstance = loadBalancerClient.choose("service-producer");
System.out.println("服务地址:" + serviceInstance.getUri());
System.out.println("服务名称:" + serviceInstance.getServiceId());
String callServiceResult = new RestTemplate().getForObject(serviceInstance.getUri().toString() + "/hello", String.class);
System.out.println(callServiceResult);
return callServiceResult;
}
@RequestMapping("/call2")
public String call2() {
return rt.getForObject("http://service-producer/hello", String.class);
}
@RequestMapping("/call3")
public String call3()
{
return fs.hello();
}
@RequestMapping("/call32")
public String call32() {
return fs2.hello();
}
}