Netty 3.x 提供了MemoryAwareThreadPoolExecutor,它允许在 I/O 线程模型和执行业务逻辑的线程模型之间进行流控制。
在 4.0 API 中情况发生了很大变化,每个处理程序基本上都提供了输入缓冲区,并且可以在自己的专用线程中执行。一个快速的解码器如何写入一个运行在单独线程中的较慢的业务处理程序的输入缓冲区,被限制或阻塞?
Netty 3.x 提供了MemoryAwareThreadPoolExecutor,它允许在 I/O 线程模型和执行业务逻辑的线程模型之间进行流控制。
在 4.0 API 中情况发生了很大变化,每个处理程序基本上都提供了输入缓冲区,并且可以在自己的专用线程中执行。一个快速的解码器如何写入一个运行在单独线程中的较慢的业务处理程序的输入缓冲区,被限制或阻塞?
在 cr2 中,您可能会使用允许限制入站缓冲区的功能,但它不会为您的问题提供开箱即用的解决方案。但是,在 cr6 中,此功能消失了。我也想看到这个问题的答案。
更新:这是我想出的一个基本实现。当然肯定有更好的方法:https ://stackoverflow.com/questions/17389396/netty-throttling-reads-example