尝试使用带有Eureka和功能区的Feign客户端 -
使用名为测试服务的Eureka注册服务。
能够如下成功使用Ribbon和Eureka -
@Autowired
private LoadBalancerClient loadBalancer;
public void getEmployee() throws RestClientException, IOException {
ServiceInstance serviceInstance=loadBalancer.choose("test-service");
String baseUrl=serviceInstance.getUri().toString();
baseUrl=baseUrl+"/test";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response=null;
try{
response=restTemplate.exchange(baseUrl,
HttpMethod.GET, getHeaders(),String.class);
}
这可以正常工作,包括负载平衡。
现在尝试用Feign替换RestTemplate,如下所示 -
@FeignClient(name="test-service")
public interface RemoteCallService {
@RequestMapping(method=RequestMethod.GET, value="/test")
public String resp();
}
按照以下方式进行假装调用 -
@Autowired
private RemoteCallService loadBalancer;
public void getEmployee() throws RestClientException, IOException {
String data=loadBalancer.resp();
}
但这不起作用。 Feign URL未正确形成。 在调试时,FeignClient具有以下值 -
HardCodedTarget(type = RemoteCallService,name = test-service, url = http://test-service )
任何人都可以告诉我缺少什么。
由于