什么是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默认也会负责负载平衡。