什么是Netflix Feign?它的优点是什么?

Feign是受到Retrofit,JAXRS-2.0和WebSocket启发的java客户端联编程序。Feign的第一 个目标是将约束分母的复杂性统一到http apis,而不考虑其稳定性。在employeeconsumer的例子中,我们使用了employee-producer使用REST模板公开的REST服务。

但是我们必须编写大量代码才能执行以下步骤

  • 使用功能区进行负载平衡。
  • 获取服务实例,然后获取基本URL。
  • 利用REST模板来使用服务。 前面的代码如下
@Controller
public class ConsumerControllerClient {
    @Autowired
    private LoadBalancerClient loadBalancer;

    public void getEmployee() throws RestClientException, IOException {

        ServiceInstance serviceInstance = loadBalancer.choose("employeeproducer");

        System.out.println(serviceInstance.getUri());

        String baseUrl = serviceInstance.getUri().toString();

        baseUrl = baseUrl + "/employee";

        RestTemplate restTemplate = new RestTemplate();
        try {
            response = restTemplate.exchange(baseUrl,

                    ResponseEntity < String > response = null;

            HttpMethod.GET, getHeaders(), String.class);
        } catch (Exception ex) {

            System.out.println(ex);
        }
        System.out.println(response.getBody());

    }
}

之前的代码,有像NullPointer这样的例外的机会,并不是最优的。我们将看到如何使用 Netflix Feign使呼叫变得更加轻松和清洁。如果Netflix Ribbon依赖关系也在类路径中,那么 Feign默认也会负责负载平衡。