Netty http流水线方法验证

时间:2013-03-28 06:39:37

标签: http netty http-protocols

我已经实现了一个处理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

你还可以做更多有趣的事情,比如发送chunked reply。

这种方法看起来合理吗?它肯定有效!在上游处理程序中转换消息事件是常规/可接受的吗?显然,如果再次转换消息事件,那么流水线操作功能将无效。

1 个答案:

答案 0 :(得分:1)

我快速浏览了......一些评论。

1)您必须同步您对PriorityQueue的访问权限,因为任何线程都可能触发下游事件。

2)对于nextRequiredSequence也需要做同样的事情,或者使用应该更好的AtomicInteger

3)你想使用Channel.close()

其余的看起来不错