io.netty.channel.pool.ChannelPoolHandler#io.netty.channel.pool.SimpleChannelPool源码实例Demo

下面列出了io.netty.channel.pool.ChannelPoolHandler#io.netty.channel.pool.SimpleChannelPool 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: api-gateway-core   文件: BackClientPool.java
private BackClientPool() {
    bootstrap
            .group(group)
            .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 500)
            .channel(NioSocketChannel.class)
            .option(ChannelOption.TCP_NODELAY, true)
            .option(ChannelOption.SO_KEEPALIVE, true);

    poolMap = new AbstractChannelPoolMap<RequestHolder, SimpleChannelPool>() {
        @Override
        protected SimpleChannelPool newPool(RequestHolder requestHolder) {
            return new FixedChannelPool(bootstrap.remoteAddress(requestHolder.getSocketAddress()), new BackPoolHandler(requestHolder), 50);
        }
    };
}
 
源代码2 项目: util4j   文件: PoolTest.java
public static void main(String[] args) {
		EventLoopGroup group = new NioEventLoopGroup();
		final Bootstrap cb = new Bootstrap();
		cb.group(group).channel(NioSocketChannel.class);
		InetSocketAddress addr1 = new InetSocketAddress("10.0.0.10", 8888);
		InetSocketAddress addr2 = new InetSocketAddress("10.0.0.11", 8888);

		//连接池map
		ChannelPoolMap<InetSocketAddress, SimpleChannelPool> poolMap = new AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool>() {
		    @Override
		    protected SimpleChannelPool newPool(InetSocketAddress key) {
		        return new SimpleChannelPool(cb.remoteAddress(key), new TestChannelPoolHandler());
		    }
		};

		final SimpleChannelPool pool1 = poolMap.get(addr1);//取出連接addr1地址的连接池
		final SimpleChannelPool pool2 = poolMap.get(addr2);//取出連接addr2地址的连接池
		Future<Channel> f1 = pool1.acquire();//获取一个连接
		f1.addListener(new FutureListener<Channel>() {
		    @Override
		    public void operationComplete(Future<Channel> f) {
		        if (f.isSuccess()) {
		            Channel ch = f.getNow();
		           //连接地址1的某个channel
		            //使用连接发送消息
//		            ch.write(msg)
		            //用完释放
		            pool1.release(ch);
		        }
		    }
		});

	}
 
源代码3 项目: xio   文件: XioConnectionPool.java
public XioConnectionPool(Bootstrap bootstrap, AsyncRetryLoopFactory retryLoopFactory) {
  Preconditions.checkNotNull(bootstrap);
  this.retryLoopFactory = Preconditions.checkNotNull(retryLoopFactory);
  handler = bootstrap.config().handler();
  eventLoopGroup = bootstrap.config().group();
  simpleChannelPool = new SimpleChannelPool(bootstrap, channelPoolHandler, channelHealthChecker);
}
 
源代码4 项目: ambry   文件: Http2MultiplexedChannelPool.java
/**
 * @param inetSocketAddress Remote Socket Address (IP address + port number).
 * @param sslFactory {@link SSLFactory} used for SSL connection.
 * @param eventLoopGroup The event loop group.
 * @param http2ClientConfig http2 client configs.
 * @param http2ClientMetrics http2 client metrics.
 * @param streamChannelInitializer {@link ChannelInitializer} to initilize a stream channel pipeline
 */
public Http2MultiplexedChannelPool(InetSocketAddress inetSocketAddress, SSLFactory sslFactory,
    EventLoopGroup eventLoopGroup, Http2ClientConfig http2ClientConfig, Http2ClientMetrics http2ClientMetrics,
    ChannelInitializer streamChannelInitializer) {
  this(new SimpleChannelPool(createBootStrap(eventLoopGroup, http2ClientConfig, inetSocketAddress),
          new Http2ChannelPoolHandler(sslFactory, inetSocketAddress.getHostName(), inetSocketAddress.getPort(),
              http2ClientConfig)), eventLoopGroup, ConcurrentHashMap.newKeySet(), inetSocketAddress, http2ClientConfig,
      http2ClientMetrics, streamChannelInitializer);
}
 
@Override
public ChannelPool createChannelPool(InetSocketAddress key) {
    return new SimpleChannelPool(getBootstrap().remoteAddress(key), channelPoolHandler);
}