dubbo客户端接受不了服务端返回的数据

  1. dubbo客户端接受不了服务端返回的数据

1.1报错现象

1.1.1、客户端

1.1.2服务端:

进入了具体业务逻辑,但是客户端没有获取到数据。

1.2 dubbo客户端与服务端网络通讯顺序:

客户端encoder、服务端decoder、具体业务逻辑、服务端encoder、客户端decoder。

1.3、bug定位

1.3.1、先debug定位

客户端encoder

服务端decoder

业务逻辑

服务端encoder

然后客户端就一直没有结束到数据,导致超时。

问题就应该是服务端encoder至客户端接受这块有问题。

1.3.2、借助工具

从github下载一个与当前系统中版本一样的dubbo,这里用的是2.7.22。

io.netty.handler.logging.LoggingHandler是netty提供的工具类,

修改dubbo NettyClient

修改dubbo NettyServer

去本地maven仓库找到dubbo-2.7.22.jar,把编译好的NettyClient.class、NettyServer.class

跟新到dubbo-2.7.22.jar包中

客户端-encoder日志

服务端-decoder日志

服务端-业务日志

没有发现服务端encoder日志,问题发生在服务端

1.3.3、再次debug定位

org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter


com.alipay.sofa.tracer.plugins.dubbo.wrapper.DataSizeCodecWrapper

io.netty.handler.codec.MessageToByteEncoder#write

就是引入<dependency>

            <groupId>com.alipay.sofa</groupId>

            <artifactId>tracer-sofa-boot-starter</artifactId>

<version>3.0.5</version>

        </dependency>导致问题。

把该jar包隐藏掉,刷新一下再验证一下

1.3.4、验证是否正常

客户端-encoder

服务端decoder

服务端业务日志

服务端encoder

客户端decoder

正常

1.3.5总结

起始1.3.1、1.3.3就可以定位出该问题,引入1.3.2虽然更直观定位问题所在,但是会浪费一些时间。

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值