Feign 调用服务提供者

Feign 是一种声明式的服务调用客户端,它可以让程序员以声明的方式调用远程服务。Feign 通过创建接口并用注解来配置它来帮助程序员定义客户端接口。Feign 使用 Ribbon 实现客户端负载均衡,可以自动处理和调整请求的路由,并且可以支持多种服务发现系统,如 Eureka、Consul 等。

客户端无法获取到结果的原因

调用服务提供者返回 IPage 的时候,客户端无法获取到结果,这主要是因为 Feign 默认使用的是 JDK 的序列化机制,而 IPage 是使用的 fastjson 序列化机制,因此它们之间的序列化机制不兼容,导致客户端无法获取到结果。

解决方案

要解决这个问题,首先需要在 Feign 客户端的配置文件中配置 fastjson 序列化器,具体配置如下:

@Configuration
public class FeignConfig {
@Bean
public Encoder feignEncoder() {
return new FastJsonEncoder();
}
}
Java

然后在 Feign 客户端的接口中使用 @FeignClient 注解,添加 configuration 属性,指定使用 FeignConfig 配置,具体配置如下:

@FeignClient(name = "xxx", configuration = FeignConfig.class)
public interface XxxClient {
// 具体方法
}
Java

这样,Feign 客户端就可以正确地解析服务提供者返回的 IPage 结果,从而获取到正确的结果。