2

クライアントが ACK を適切に読み取らない場合にriemannサーバーで OOME が発生するのを防ぐために、チャネルが書き込み不能になったときにチャネルを閉じるロジックを実装しました。

ただし、これはおそらく、サーバーが TCP 経由で送信できるよりも速く結果を書き込もうとするため、大規模なクエリ結果を送信するときにチャネルも閉じます。私の頭の中で、この状況を処理する最善の方法は、WriteTimeoutHandlerを使用して、書き込み時にタイムアウトを設定することだと思います。

その場合を処理するために netty で知られている標準パターンはありますか?

4

1 に答える 1

1

基本的にChannel.isWritable()は、false を返すと書き込みを停止し、true を返すと再び書き込みを開始します。をオーバーライドすることで、これの更新で通知を受けることができますChannelInboundHandler.channelWritabilityChanged(...)

于 2016-05-31T06:44:43.923 に答える