http パイプラインを処理するためのチャネル ハンドラを実装しました。私のコードは github にあります: https://github.com/huntc/netty-http-pipelining
私の質問は、私が取ったアプローチと、それが Netty のアーキテクチャーのコンテキストで合理的なものであるかどうかについてです。
HttpPipeliningHandler が上流の HttpRequest を受け取ると、OrderedUpstreamMessageEvent タイプの新しいメッセージ イベントを形成します。このイベントも私のパッケージの一部であり、応答メッセージを作成するときに必要となる要求に関連する情報を保持します。
さらに上流のチャネル ハンドラーが OrderedUpstreamMessageEvent を受信すると、OrderedDownstreamMessageEvent を生成して応答を形成します。
ctx.sendDownstream(new OrderedDownstreamMessageEvent(oue, somemessage));
どこ
ctx = ChannelHandlerContext instance
oue = OrderedUpstreamMessageEvent instance
somemessage = some message instance to be sent as an http response
チャンクされた返信を送信するなど、もっと楽しいこともできます。
このアプローチは合理的に見えますか? それは確かに機能します!アップストリーム ハンドラーでメッセージ イベントを変換することは定期的/容認されますか? 明らかに、メッセージ イベントが再度変換されると、パイプライン機能は機能しなくなります。