2

我的应用程序接收到一个 HTTP 请求,在管道的中间,调用另一个服务器以获取支持信息。在响应返回之前,初始 HTTP 请求无法继续通过管道。我不能awaitUninterruptability()从 I/O 线程中使用,那么进行这些调用的最佳方法是什么,这样我就不会阻止 Netty 的事件循环,而是将客户端的管道暂停,直到我的调用返回并告诉管道继续?

4

2 回答 2

4

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

我认为你应该更好地使用类似的东西:

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 中处理它。但我想你明白了..

于 2012-04-28T18:32:17.217 回答
0

我猜你需要一个ExecutionHandler

于 2012-04-28T11:34:34.757 回答