私のアプリは HTTP リクエストを受け取り、パイプラインの途中で、サポート情報を得るために別のサーバーへの呼び出しが行われます。最初の HTTP 要求は、その応答が返されるまでパイプラインを続行できません。I/O スレッドからは使用できないため、awaitUninterruptability()
これらの呼び出しを行う最善の方法は何ですか? 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 に答える