首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个网络通道之间传播反压力

在两个网络通道之间传播反压力
EN

Stack Overflow用户
提问于 2013-11-02 22:54:42
回答 2查看 2.6K关注 0票数 7

我想使用netty-4编写一个系统,其中服务器接收来自一个通道的请求(巧妙地配音为in),进行转换,并可能将结果放到另一个后端系统(称为out)。

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

部分解

我相信可以知道什么时候out频道准备好用channel.isWritable()写了。

this question的一个答案提到禁用AUTO_READ,但我认为我必须负责轮询通道的读取。我对此不高兴--除非我能在阅读的时候收到一条信息。此时,使用netty的实用程序主要是无副本缓冲区和ByteToMessageDecoder超类。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-04 13:05:07

添加到Igor的答案-您有几个选项,以重新激活读。第一个,如图所示,here意味着捕获目标通道上的channelWritabilityChanged事件。您可以检查通道的状态,并在源通道上启用自动读取。

或者,代理示例显示了将写完成监听器设置为写和刷新。此技术也有效,但没有利用Netty的高/低水标排队系统,因为只有当写入被刷新到网络缓冲区时,才会被告知写入已经完成。

票数 7
EN

Stack Overflow用户

发布于 2013-11-03 05:35:18

对,当OUT不可写时,您可以在IN通道上禁用AUTO_READ,并在OUT准备就绪时再次启用AUTO_READ。这里不需要投票。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19747826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档