Soul网关源码分析-springCloud应用请求如何通过soul转发到后台

昨天以使用者的角度体验了springCloud工程接入soul后的转发处理效果,结果最终结果报错了,如下图:
在这里插入图片描述
那么今天我们就基于这个报错来分析一下源码,到底是哪个环节导致最终结果出错,从这个图的报错信息可以看到,是无法找到正确的选择器导致的报错,结合之前对http请求以及dubbo请求的分析经验,尝试从插件链的角度分析问题出现的原因,先在soul-admin管理控制台中查看目前的插件列表,因为之前调试过dubbo请求,所以目前dubbo和springCloud插件状态都是开启状态,所以怀疑是否是受到dubbo插件的影响,故先把dubbo插件的状态改为关闭再进行调试。

由之前的调试经验,知道SoulWebHandler是入口程序,故在SoulWebHandler的execute方法中打了断点进行调试,然后我们今天调试的是springCloud请求,故根据之前的经验,必然是会执行SpringCloudPlugin插件的,但是经过调试发现,请求根本没进去SpringCloudPlugin插件,SpringCloudPlugin插件的skip标志位为true,也就是直接跳过了这个插件执行了,是为什么呢,点进去SpringCloudPlugin插件的skip方法查看,发现是如下的判断逻辑:

final SoulContext body = exchange.getAttribute(Constants.CONTEXT);
        //当前请求的RpcType的值不为springCloud则返回true
        return !Objects.equals(Objects.requireNonNull(body).getRpcType(), RpcTypeEnum.SPRING_CLOUD.getName())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值