2828public class HttpClientPool {
2929 private final static Logger logger = LoggerFactory .getLogger (HttpClientPool .class );
3030
31- private final EventLoopGroup group = new NioEventLoopGroup ();
31+ private final EventLoopGroup group = new NioEventLoopGroup (8 * 4 );
3232 private final Bootstrap bootstrap = new Bootstrap ();
3333 private ChannelPoolMap <RequestHolder , SimpleChannelPool > poolMap ;
3434
@@ -51,24 +51,25 @@ protected SimpleChannelPool newPool(RequestHolder requestHolder) {
5151 };
5252 }
5353
54- public void request (RequestHolder requestHolder , Channel serverChannel ) {
55- logger .debug ("requestHolder.hashCode: {}" , requestHolder .hashCode ());
54+ public synchronized void request (RequestHolder requestHolder , Channel serverChannel ) throws InterruptedException {
5655 final SimpleChannelPool pool = poolMap .get (requestHolder );
57- Future <Channel > f = pool .acquire ();
56+ Future <Channel > f = pool .acquire (). sync () ;
5857 f .addListener ((FutureListener <Channel >) future -> {
5958 if (future .isSuccess ()) {
6059 HttpRequest request = requestHolder .request ;
6160 HttpPostRequestEncoder bodyRequestEncoder = requestHolder .bodyRequestEncoder ;
6261
6362 Channel clientChannel = future .getNow ();
6463 clientChannel .attr (Attributes .SERVER_CHANNEL ).set (serverChannel );
64+ clientChannel .attr (Attributes .CLIENT_POOL ).set (pool );
65+
6566 clientChannel .write (request );
6667 if (bodyRequestEncoder != null && bodyRequestEncoder .isChunked ()) {
6768 clientChannel .write (bodyRequestEncoder );
6869 }
6970 clientChannel .flush ();
7071
71- pool .release (clientChannel );
72+ // pool.release(clientChannel);
7273 }
7374 });
7475 }
0 commit comments