我是靠谱客的博主 强健电源,最近开发中收集的这篇文章主要介绍spring cloud gatway, Hystrix post请求没有正确的回调场景: 异常情况: 异常原因: 解决:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

场景:


通过 Hystrix 在网关中控制接口的请求响应时间,当超时时返回一个默认的返回值
配置大概如下:

- name: Hystrix
  args:
    name: retrycmd
    fallbackUri: forward:/retryFallback


异常情况:


该配置在 GET 请求时一切都正常,但在POST就会出现异常,不回调
异常信息大概如下: 意思大概是找不到回调的方法

retrycmd timed-out and fallback failed.


异常原因:

经过各种跟踪,发现原来是因为 webFlux 本身的跨域验证的问题
请求POST接口时,会进行跨域验证,
CorsUtils.isSameOrigin 方法抛出了一个新的异常
异常信息是 :"Actual request scheme must not be null"

出现了异常套娃现象,导致无法进入到回调中

github 也有人碰到了类型的问题
https://github.com/spring-cloud/spring-cloud-gateway/issues/593
https://github.com/spring-cloud/spring-cloud-gateway/issues/677


解决:


思路:重载跨域验证方法;

自定一个 RequestMappingHandlerMapping,然后覆盖默认的 DefaultCorsProcessor;

代码:

@Configuration(com.htcf.frame.Constants.FRAME_BEAN_PREFIX + "WebFluxConfig")
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
@ConditionalOnClass(WebFluxConfigurer.class)
public class WebFluxConfig implements WebFluxRegistrations{
private ReactiveRequestMappingHandlerMapping reactiveRequestMappingHandlerMapping = null;
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
return reactiveRequestMappingHandlerMapping();
}
//@Bean
public ReactiveRequestMappingHandlerMapping reactiveRequestMappingHandlerMapping()
{
if(reactiveRequestMappingHandlerMapping == null )
{
reactiveRequestMappingHandlerMapping =
new ReactiveRequestMappingHandlerMapping();
reactiveRequestMappingHandlerMapping.setCorsProcessor( new EmptyDefaultCorsProcessor() );
}
return reactiveRequestMappingHandlerMapping;
}
class ReactiveRequestMappingHandlerMapping extends RequestMappingHandlerMapping{
@Override
protected boolean isHandler(Class<?> beanType) {
return super.isHandler(beanType) && !beanType.isInterface();
}
}
class EmptyDefaultCorsProcessor extends DefaultCorsProcessor
{
@Override
public boolean process(CorsConfiguration config, ServerWebExchange exchange) {
return true;
}
}
}

 

最后

以上就是强健电源为你收集整理的spring cloud gatway, Hystrix post请求没有正确的回调场景: 异常情况: 异常原因: 解决:的全部内容,希望文章能够帮你解决spring cloud gatway, Hystrix post请求没有正确的回调场景: 异常情况: 异常原因: 解决:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部