我使用的是Maven中心的4.1.0.Final。在我的应用程序中,我在某个时间点之后禁用自动读取,如下所示:channel.config().setIsAutoRead(false);我没有对read进行任何调用,但我的应用程序仍然可以读取,在我的管道中只有一个ByteToMessageDecoder,我的(可共享的)初始化器是我的服务器 Bootstrap 的子处理程序。这是为什么?自动读取不能在运行中禁用吗?这是一个bug吗?
channel.config().setIsAutoRead(false);
read
ByteToMessageDecoder
50few1ms1#
如果你有一个ByteToMessageDecoder在你的管道中,它将继续读取,直到你把一个Object放入decode方法的输出列表中。2这是因为,否则用户可能永远没有机会自己调用read()。
kb5ga3dv2#
FlowControlHandler是最近添加的,并且在此上下文中可能有用。
s3fp2yjn3#
遇到了相同的问题,通过将ByteToMessageDecoder#singleDecode设置为true解决了该问题。
ByteToMessageDecoder#singleDecode
3条答案
按热度按时间50few1ms1#
如果你有一个ByteToMessageDecoder在你的管道中,它将继续读取,直到你把一个Object放入decode方法的输出列表中。2这是因为,否则用户可能永远没有机会自己调用read()。
kb5ga3dv2#
FlowControlHandler是最近添加的,并且在此上下文中可能有用。
s3fp2yjn3#
遇到了相同的问题,通过将
ByteToMessageDecoder#singleDecode
设置为true解决了该问题。