LoggingHandler及其对处理程序的影响

问题描述

我正在测试使用netty的TcpClient(针对用Rust编写的TCP服务器)。客户端以突发方式发送LengthPrefixed消息(无需等待响应),然后在响应到达时对其进行处理。

奇怪的是,某些消息从未得到响应(但是我很确定响应已经从服务器到达,但从未传递给处理程序)。现在,如果我将LoggingHandler引入到链中,事情就会开始起作用,所以只是想知道LoggingHandler是否会进一步改变处理程序的行为。顺便说一句,如果我在两个请求之间引入一个小的延迟(例如100毫秒),事情也会起作用。任何指示/见解都会有所帮助。

管道非常简单- LoggingHandler-> LengthFieldBasedFrameDecoder-> TcpClientChannelInboundHandler

(代码在此处-https://github.com/rkbalgi/tcpasync/blob/master/src/main/java/com/github/rkbalgi/tcpasync/client/TcpClient.java#L80,测试在这里-https://github.com/rkbalgi/tcpasync/blob/master/src/test/java/TcpClientTest.java#L82

我正在 Windows 10 上使用 netty-4.1.51

更新-某些消息从未得到回应,因为它们从未发出:)。看起来问题可能与执行太多并发的writeAndFlush()而不检查那些结果有关。添加sync()似乎可以解决此问题。仍在调查中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)