Soul网关源码探秘《三》 - Dubbo插件配置

Soul网关源码探秘《三》 - Dubbo插件配置

运行 soul-examples-alibaba–dubbo-service

使用 brew 启动一个 zookeeper 服务,然后直接启动 soul-examples-alibaba–dubbo-service 项目。

之后需要在 soul-admin 中开启 dubbo 插件。

测试 dubbo 插件

在 postman 中发送请求 http://127.0.0.1:9195/dubbo/order/findById?id=5,结果返回报错信息
dubbo报错
此时在 bootstrap 控制台发现报错信息
bootstrap报错信息
按照图中报错信息全局查找 CheckUtils 这个类
CheckUtils工具类
发现到达这个类的时候已经出现了错误,这个类只是封装了返回的错误提示信息。之后根据左侧调用栈的信息进行排查。

发现问题主要出现在 AbstractSoulPlugin 的 execute 调用时,图中所示位置 selectorData 返回为空。
主要错误
final SelectorData selectorData = matchSelector(exchange, selectors);这儿不断打断点深入调用过程,最终发现错误的根源是我请求的 url 是 http://127.0.0.1:9195/dubbo/order/findById?id=5,而 /dubbo/order/findById 并没有注册为 dubbo 中的服务,所以会去匹配 divide 中设置的匹配规则,自然就不能匹配成功。
主要根源
再次请求 http://127.0.0.1:9195/dubbo/findById?id=5,成功返回信息。
正确信息


总结

虽然这个错误很低级,但通过不断调试,充分的领略到了一个道理:

没有什么 Bug 是一个断点不能解决的

而且在这个过程中,了解到了插件责任链中,每个插件是如何进行规则匹配的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rughru

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值