java - Netty 4.1:防止在服务器异常上发送 TCP ACK
问题描述
我正在使用使用 Netty 4.1 接收专有协议的现有 Java 服务器。有时,这些消息必须传递到的下游系统将无法接受它们。发生这种情况时,我的管道中将引发异常。在这些情况下,与其实现我自己的恢复机制,我更愿意利用(现有)客户端将重新发送未收到 TCP ACK 的消息这一事实。
netty 是否可以实现这样的方案,如果可以,我应该如何实现我的管道来实现这一点?我管道中的所有 ChannelHandler 实现都在父组中运行,因为它们的操作速度可以接受。
解决方案
TCP ACK 是一种传输层机制,用于确认接收方已成功接收数据。您在用例中想要的是一种应用程序层机制,用于确认数据已由应用程序成功处理(包括将其转发到管道中的另一个步骤)。
这些是完全不同的事情,即数据交付的成功与数据处理的成功。没有 API 可以(错误地)将第一个用于后者,即您需要实现自己的(应用程序级别)机制。
推荐阅读
- ada - 在 Ada 中定义一个包含元素和多重性对的包 Multiset
- java - Jasypt 无法使用 Spring 从系统环境变量中解密密码
- c# - 通过 ssh 远程调试 dotnet 核心应用程序并且无法附加
- javascript - 如何获取 [[PromiseValue]] 并将其存储到局部变量中?
- ios - 如果实例化,Alamofire 会话配置相同?
- javascript - JavaScript - 连接四个 - 获胜者是 - getelementbyid
- reactjs - 将连接字符串添加到生产应用程序
- android - 无法完成会话:INSTALL_FAILED_INVALID_APK: /data/app/....tmp/...-debug 版本代码 29 与 28 不一致
- powershell - 当我的客户端在 PowerShell 中的域 C 中时,从域 B 中的 AD 组中删除域 A 中的 AD 用户
- c++ - 用户定义的转换顺序