我想使用 netty-4 编写一个系统,其中服务器接收来自一个通道的请求(巧妙地称为in),进行转换并可能将结果放到另一个通道到另一个后端系统(称为out)。
但是我想将背压从输出通道传播到输入通道?具体来说——因为 netty API 是异步的——当out不再被阻塞时我如何得到通知;并告诉暂停/恢复?
部分解决方案
我相信可以判断出通道何时准备好使用channel.isWritable()
.
这个问题的答案提到禁用AUTO_READ,但我相信我必须负责轮询通道以进行读取。我对此并不高兴——除非我可以在准备好阅读时收到一条消息。在这一点上,使用 netty 的实用程序主要是无复制缓冲区和 ByteToMessageDecoder 超类。