Netty中的同步HTTP调用

时间:2012-04-27 22:58:02

标签: http netty event-driven

我的应用程序收到HTTP请求,并且在管道中间,调用另一台服务器以获取支持信息。在响应返回之前,初始HTTP请求无法继续通过管道。我无法使用来自I / O线程的awaitUninterruptability(),所以最好的方法是进行这些调用,这样我就不会阻止Netty的事件循环,而是将客户端的管道置于保持状态,直到我的调用返回并且我告诉管道继续吗?

2 个答案:

答案 0 :(得分:4)

Ryan这听起来不是一个好主意..

我认为你应该更好地使用这样的东西:

public class HttpHandler extends SimpleChannelUpstreamHandler{

    @Override
    public void messageReceived(final ChannelHandlerContext ctx, final MessageEvent e) throws Exception {
        otherChannel.write(yourRequet).addListener(new ChannelFutureListener() {

            public void operationComplete(ChannelFuture future) throws Exception {

                // once the write is done we can continue in the pipeline
                ctx.sendUpstream(e);
            }
        });

        // the event stops here to get processed

    }

}

如果您需要等待响应,则需要在另一个SimpleChannelUpstreamHandler中处理它。但我认为你明白了......

答案 1 :(得分:0)

我猜你需要一个ExecutionHandler