zoukankan      html  css  js  c++  java
  • gateway调用Fegin失败问题解决

    起因

    新项目用的是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
     */
    @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());
            };
        }
    
    
  • 相关阅读:
    Web安全
    前端安全之XSS攻击
    SQL盲注
    Vim使用手册
    VC获取cookies的几种方法
    Wireshark基本介绍和学习TCP三次握手
    细说Cookie
    top100tools
    如何更改Jframe里Jpanel的大小
    HTTP&&Fiddler教程
  • 原文地址:https://www.cnblogs.com/zhou-yuan/p/14247092.html
Copyright © 2011-2022 走看看