2

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