新项目用的是springcloud2.0,网关用gateway替换了zuul。
gateway动态路由跟zuul有本质上的区别。这就涉及到webflux这一套大东东了。简单来说,gateway是spring5.0b出来的,最新基于webflux,默认使用netty为底层容器的一套响应式,非阻塞的异步框架,这跟之前的zuul的同步阻塞,基于tomcat的框架是完全不同的,具体到细节,光编码就是完全不一样,是另一种的风格基于jdk8的Lambda和流那一套东东,还涉及到Flux 和 Mono。
这篇文章主要不是来讲webflux的,这边也只是简单讲一下。
网上百度一波,基本上都说修改feign的配置文件,注入Decode。结果发现不行,仅仅修改decode是完全不够的,还要修改encode。
具体如下:
/**
* 手动调整feignConfig,以支持webflux下feign调用
*
* @auther: jrhua
* @date: 2020/7/17 14:17
*/
@Configuration
public class FeignConfig {
@Bean
public Encoder feignEncoder() {
return new SpringEncoder(feignHttpMessageConverter());
}
@Bean
public Decoder feignDecoder() {
return new OptionalDecoder(
new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter())));
}
public ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() {
return () -> {
return new HttpMessageConverters(new MappingJackson2HttpMessageConverter());
};
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章