1

尝试将 Feign Client 与 Eureka 和 Ribbon 一起使用-

使用带有 name-test-service 的 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();

}

并使用 feign 进行如下调用-

@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 )

谁能告诉我我错过了什么。

谢谢

4

0 回答 0