Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 如何在客户端速度较慢的情况下限制netty服务器?_Clojure_Netty_Riemann - Fatal编程技术网

Clojure 如何在客户端速度较慢的情况下限制netty服务器?

Clojure 如何在客户端速度较慢的情况下限制netty服务器?,clojure,netty,riemann,Clojure,Netty,Riemann,为了防止当客户端没有正确读取数据包时服务器中出现OOME,我实现了在通道不可写入时关闭通道,假设这是由于客户端没有足够快地读取/打包数据包造成的 但是,在发送大型ish查询结果时,这也会关闭通道,可能是因为服务器试图以比通过TCP发送更快的速度写入结果。在我脑海中,我认为处理这种情况的最好方法是使用 netty中是否有一些已知的标准模式可以处理这种情况?基本上,您会停止写入一次通道。isWritable()返回false,然后在返回true后重新开始。您可以通过覆盖ChannelInboundH

为了防止当客户端没有正确读取数据包时服务器中出现OOME,我实现了在通道不可写入时关闭通道,假设这是由于客户端没有足够快地读取/打包数据包造成的

但是,在发送大型ish查询结果时,这也会关闭通道,可能是因为服务器试图以比通过TCP发送更快的速度写入结果。在我脑海中,我认为处理这种情况的最好方法是使用


netty中是否有一些已知的标准模式可以处理这种情况?

基本上,您会停止写入一次
通道。isWritable()
返回false,然后在返回true后重新开始。您可以通过覆盖ChannelInboundHandler收到更新通知。channelWritabilityChanged(…)

看起来这个问题是相关的:感谢您的建议,这是我的想法,但在这种特殊情况下,这似乎相当复杂,因为我需要处理一些逻辑,以了解哪些类型的响应没有被编写出来。有没有办法放弃输出缓冲区中的响应?最后,恐怕我想做的事情没有切实可行的解决办法。。。