Java Netty 设置自动读取

标签 java asynchronous netty flow-control event-loop

在调用处理程序链时,Netty 4(或 5)是否继续读取?就像在后台读取并填充一个巨大的队列并在处理程序链完全准备好后处理所有读取一样?

我这么问是因为我想将传入缓冲区保存到文件中,但文件被阻塞,如果传入消息多于硬盘驱动器可以处理的数量,那么这些消息会排队还是阻塞事件只是停止事件队列阅读更多消息?在发送端,我使用 FileRegion 因此为编写器提供了流控制。

我查看了源代码,但我不完全确定这些 ChannelInvokers 是如何工作的,似乎如果没有指定任何一个,则会使用 eventLoop.next()< 创建默认 channel .

如果有人可以帮助我确保我不会引入潜在的流量控制错误,那就太好了...

我看到了选项setAutoRead,但我很确定这会产生不同的效果。

最佳答案

如果您想做这样的事情,您应该在添加写入 FS 的处理程序时指定自定义 DefaultEventExecutorGroup。这样,您将从 EventLoop 移交工作,因此不会阻止此处的任何内容。

关于Java Netty 设置自动读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319029/

相关文章:

java - Netty如何使用ByteToMessageCodec?

java - Netty 4.0 - 关闭无效输入的 channel

java - Netty 客户端的 MVC 前端

java - 在加密之前修改 CXF RequestSecurityToken 的 XML

java - Lucene:字段的相似性(BM25)

c# - 具有 beginwait 函数的信号量

javascript - react useEffect 异步警告?

java - 如何使用 Java 从 XML 文件获取属性

java - 如何设置为 0 通知计数 android firebase

c# - 为什么 System.Net.Sockets.Socket.AcceptAsync 在长时间不活动后完成 ConnectionReset?