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