在调用处理程序链时,Netty 4(或 5)是否继续读取?就像在后台读取并填充一个巨大的队列并在处理程序链完全准备好后处理所有读取一样?
我这么问是因为我想将传入缓冲区保存到文件中,但文件被阻塞,如果传入消息多于硬盘驱动器可以处理的数量,那么这些消息会排队还是阻塞事件只是停止事件队列阅读更多消息?在发送端,我使用 FileRegion
因此为编写器提供了流控制。
我查看了源代码,但我不完全确定这些 ChannelInvokers
是如何工作的,似乎如果没有指定任何一个,则会使用 eventLoop.next()< 创建默认 channel
.
如果有人可以帮助我确保我不会引入潜在的流量控制错误,那就太好了...
我看到了选项setAutoRead
,但我很确定这会产生不同的效果。
最佳答案
如果您想做这样的事情,您应该在添加写入 FS 的处理程序时指定自定义 DefaultEventExecutorGroup。这样,您将从 EventLoop 移交工作,因此不会阻止此处的任何内容。
关于Java Netty 设置自动读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319029/