传播两个网络通道之间的背压

Mic*_*uff 5 java netty

我想要写使用网状-4,其中一个服务器从一个信道(巧妙配成接收的请求的系统),并变换和潜在把结果到另一个信道到另一个后端系统(被称为).

但我想从传播反压通道的通道?具体来说 - 因为netty API是异步的 - 当out不再被阻塞时如何得到通知; 并告诉暂停/恢复?

部分解决方案

我相信可以判断通道何时可以写入channel.isWritable().

这个问题的答案提到禁用AUTO_READ,但后来我相信我必须负责轮询通道以进行读取.我不会对此感到高兴 - 除非我能在准备好阅读时收到消息.此时,使用netty的实用程序大多只是无副本缓冲区和ByteToMessageDecoder超类.

小智 5

要添加到Igor的答案 - 您有几个选项可以重新激活读取.第一个,此处显示的意思是捕获目标通道上的channelWritabilityChanged事件.您可以检查通道的状态并在源通道上启用自动读取.

或者,代理示例显示设置写入完成侦听器以进行写入和刷新.这种技术也有效,但没有利用Netty的高/低水位标记排队系统,因为只有在写入刷新到网络缓冲区后才会被告知写入完成.