gateway在写GlobalFilter时候,调用feign出现的问题

gateway在写全局filter的时候,继承GlobalFilter,调用feign接口报错。原因是在gateway项目创建的时候,不会创建HttpMessageConverters实例。所以需要建立一个手动放入bean容器里

@Configuration
public class FeignConfig {

    /**
     * 默认connect timeout 10s,read timeout 60s
     * @return
     */
    @Bean
    public Request.Options feignOptions(){
        return new Request.Options();
    }

    @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());
        };
    }

}

这样程序会启动成功。

因为gateway在filter过滤的时候,回大量运用异步,所以你正常调用会出现问题,回报错

gateway在写GlobalFilter时候,调用feign出现的问题_第1张图片

所以你要异步运行调用feign。

CompletableFuture future1 = CompletableFuture.supplyAsync(()->{
    return Login.login();
});

这样就可以了。

 

你可能感兴趣的:(java,java,后端)