我已经实现了一个用于处理http pipelining的通道处理程序。我的代码在 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
您还可以做更多有趣的事情,例如发送分块回复。
这种方法看起来合理吗?它当然有效!在上游处理程序中转换消息事件是否正常/可接受?显然,如果消息事件再次转换,那么流水线功能将不起作用。