从 netty 服务器读取时,不同的响应消息正在合并
Different response messages are merging while read from netty server
我有一个网络客户端应用程序。此应用程序正在连接到端口并检索 TCP 响应。当我阅读 respose under load 时,一些响应消息正在串联。我的请求和响应消息具有唯一的事务密钥。我遵循我的业务逻辑;
实际:000010690013200000101PMAX 567F 0000000000 1554092081842400 0 000010690013200000101PMAX 567F 0000000000 155608380=108=108[100]
预期:000010690013200000102PMAX 567F 0000000000 1554092081842400 0
重复响应有 2 个响应,但服务器仅发送 1 个响应,我们在读取时汇总了它
@Override
public void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf in) {
String input = in.toString(CharsetUtil.UTF_8);
log.info(input);
}
我该如何解决这个问题,它是在负载下发生的。
Netty 版本:4.1.25.Final
Java 版本:OpenJDK 64 位服务器 VM(构建 25.161-b14,混合模式)
谢谢。
这是预期的,也是 TCP 的工作方式。 TCP 没有消息边界的概念,因此您可能会在读取字节时收到字节(这意味着内容可能会被分割等)。
如果您需要保留某种消息边界,则需要在您的协议中对这些信息进行编码。例如,您可以在消息的长度前添加,然后在接收端使用此信息来正确解码消息。
Netty 本身包含一些解码器/编码器
我有一个网络客户端应用程序。此应用程序正在连接到端口并检索 TCP 响应。当我阅读 respose under load 时,一些响应消息正在串联。我的请求和响应消息具有唯一的事务密钥。我遵循我的业务逻辑;
实际:000010690013200000101PMAX 567F 0000000000 1554092081842400 0 000010690013200000101PMAX 567F 0000000000 155608380=108=108[100]
预期:000010690013200000102PMAX 567F 0000000000 1554092081842400 0
重复响应有 2 个响应,但服务器仅发送 1 个响应,我们在读取时汇总了它
@Override
public void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf in) {
String input = in.toString(CharsetUtil.UTF_8);
log.info(input);
}
我该如何解决这个问题,它是在负载下发生的。
Netty 版本:4.1.25.Final Java 版本:OpenJDK 64 位服务器 VM(构建 25.161-b14,混合模式)
谢谢。
这是预期的,也是 TCP 的工作方式。 TCP 没有消息边界的概念,因此您可能会在读取字节时收到字节(这意味着内容可能会被分割等)。
如果您需要保留某种消息边界,则需要在您的协议中对这些信息进行编码。例如,您可以在消息的长度前添加,然后在接收端使用此信息来正确解码消息。
Netty 本身包含一些解码器/编码器