我的应用程序收到HTTP请求,并且在管道中间,调用另一台服务器以获取支持信息。在响应返回之前,初始HTTP请求无法继续通过管道。我无法使用来自I / O线程的awaitUninterruptability()
,所以最好的方法是进行这些调用,这样我就不会阻止Netty的事件循环,而是将客户端的管道置于保持状态,直到我的调用返回并且我告诉管道继续吗?
答案 0 :(得分: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中处理它。但我认为你明白了......
答案 1 :(得分:0)
我猜你需要一个ExecutionHandler。