博客
关于我
gateway调用Fegin失败问题解决
阅读量:470 次
发布时间:2019-03-06

本文共 1003 字,大约阅读时间需要 3 分钟。

起因

新项目用的是springcloud2.0,网关用gateway替换了zuul。

gateway动态路由跟zuul有本质上的区别。这就涉及到webflux这一套大东东了。简单来说,gateway是spring5.0b出来的,最新基于webflux,默认使用netty为底层容器的一套响应式,非阻塞的异步框架,这跟之前的zuul的同步阻塞,基于tomcat的框架是完全不同的,具体到细节,光编码就是完全不一样,是另一种的风格基于jdk8的Lambda和流那一套东东,还涉及到Flux 和 Mono。

这篇文章主要不是来讲webflux的,这边也只是简单讲一下。

原因是gateway这一块用fegin进行微服务之间的相互调用,发现是失败的。

问题解决

网上百度一波,基本上都说修改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 ObjectFactory
feignHttpMessageConverter() { return () -> { return new HttpMessageConverters(new MappingJackson2HttpMessageConverter()); }; }

转载地址:http://iirbz.baihongyu.com/

你可能感兴趣的文章
MySQL Workbench 数据库建模详解:从设计到实践
查看>>
MySQL Workbench 数据建模全解析:从基础到实践
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
MySQL —— 视图
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>