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());
            };
        }
    
    
  • 相关阅读:
    线程间的通信
    高速排序算法
    LightOJ 1205 Palindromic Numbers
    java异常处理
    Android Bundle类
    Linux守护进程的编程实现
    深入浅出JMS(一)——JMS简单介绍
    Maven安装与配置
    matlab学习------------普通dialog对话框,错误对话框errordlg,警告对话框warndlg
    读书笔记:计算机网络4章:网络层
  • 原文地址:https://www.cnblogs.com/zhou-yuan/p/14247092.html
Copyright © 2011-2022 走看看