Nettyで書かれたHTTPリバースプロキシでは、単一のHTTP要求(ヘッダーと任意の本文の内容)または単一のHTTP応答のために書き込まれたバイト数はどのようにして決定されますか?この情報を他のChannelHandler
で利用できるようにするには、HTTPRequestDecoder
とHTTPResponseEncoder
(またはスーパークラス)のNettyをどのようにして入手できますか?Netty:単一のHTTP要求または応答のバイト数?
ChannelHandler
をパイプラインの先頭に貼り付けるのは簡単ですが、チャンネルの書き込みと読み取りの合計バイト数は記録されますが、私はそれを望ましくありません。読み書きのバイト数を知りたい要求ごとおよび応答ごとに。 NettyのHTTPエンコーダとデコーダは、読み書きを行うものなので、私は何かをサブクラス化して読み書きロジックにフックインさせることで、エンコードまたはデコードされたメッセージごとのカウントを得ることができます。これは可能ですか?
表す要求/応答サイズが同様にHTTP拡張アクセスログ形式をサポートするようにヒストグラムと、このデータは重要です:
http://httpd.apache.org/docs/current/mod/mod_log_config.html
そのページから、単一の要求をログに記録する際に使用されるアクセスログのフォーマット文字列トークン/応答ペア:
%I Bytes received, including request and headers. Cannot be zero. You need to enable mod_logio to use this.
%O Bytes sent, including headers. May be zero in rare cases such as when a request is aborted before a response is sent. You need to enable mod_logio to use this.
%S Bytes transferred (received and sent), including request and headers, cannot be zero. This is the combination of %I and %O. You need to enable mod_logio to use this.
要求が完全に読み込まれるか、応答が完全に網状ハンドラによって書き込まれると、どのように、上記フォームを置換するのに必要な数を決定するであろう出力文字列のトークンで?
あなたはそれらを数えます。 Nettyは、読み取りまたは書き込みごとに読み取りまたは書き込みのカウントを提供します。あなたが何を求めているのか不明です。 – EJP
@EJP私はNettyの内部をよく知っています。私は、Nettyの既存のHTTPエンコーダまたはデコーダを使用しているときに、NettyのHTTPサポートを記述していないので、読み込みまたは書き込みバイト数をどのように利用できるのかを尋ねています。 –
@EJPあなたのdownvoteは不必要でした - 質問は実行可能で、答えにふさわしいです。私は質問をする前に、たくさんの研究をしました。私はそれをもう少し明確にするためにそれを更新します。 –