分享

业务的ChannelHandler接收不到消息与定位策略

 泰海志胜 2022-03-24

如果业务的ChannelHandler接收不到消息,可能有如下原因:

业务的解码ChannelHandler存在BUG,导致消息解码失败,没有投递到后端。

业务发送的是畸形或者错误码流(例如长度错误),导致业务解码ChannelHandler无法正确解码出业务消息。

业务ChannelHandler执行了一些耗时或者阻塞操作,导致Netty的NioEventLoop被挂住,无法读取消息。

执行业务ChannelHandler的线程池队列积压,导致新接收的消息在排队,没有得到及时处理。

对方确实没有发送消息。

定位策略如下:

在业务的首个ChannelHandler的channelRead方法中打断点调试,看是否读取到消息。

在ChannelHandler中添加LoggingHandler,打印接口日志。

查看NioEventLoop线程状态,看是否发生了阻塞。

通过tcpdump抓包看消息是否发送成功。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多