首页 > 解决方案 > Netty 4.1:防止在服务器异常上发送 TCP ACK

问题描述

我正在使用使用 Netty 4.1 接收专有协议的现有 Java 服务器。有时,这些消息必须传递到的下游系统将无法接受它们。发生这种情况时,我的管道中将引发异常。在这些情况下,与其实现我自己的恢复机制,我更愿意利用(现有)客户端将重新发送未收到 TCP ACK 的消息这一事实。

netty 是否可以实现这样的方案,如果可以,我应该如何实现我的管道来实现这一点?我管道中的所有 ChannelHandler 实现都在父组中运行,因为它们的操作速度可以接受。

标签: javatcpnetty

解决方案


TCP ACK 是一种传输层机制,用于确认接收方已成功接收数据。您在用例中想要的是一种应用程序层机制,用于确认数据已由应用程序成功处理(包括将其转发到管道中的另一个步骤)。

这些是完全不同的事情,即数据交付的成功与数据处理的成功。没有 API 可以(错误地)将第一个用于后者,即您需要实现自己的(应用程序级别)机制。


推荐阅读