本文共 1003 字,大约阅读时间需要 3 分钟。
新项目用的是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 */@Configurationpublic class FeignConfig { @Bean public Encoder feignEncoder() { return new SpringEncoder(feignHttpMessageConverter()); } @Bean public Decoder feignDecoder() { return new OptionalDecoder( new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter()))); } public ObjectFactoryfeignHttpMessageConverter() { return () -> { return new HttpMessageConverters(new MappingJackson2HttpMessageConverter()); }; }
转载地址:http://iirbz.baihongyu.com/