Skip to content

akurilov/netty-connection-pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

High-performance non-blocking, multi-endpoint connection pool

Introduction

Currently Netty doesn't have a connection pool implementation which would allow to get a connection to any endpoint from the specified set. This connection pool implementation solves the problem using round-robin endpoint selection for each connection leased from the pool.

Also, this connection pool implementation supports the batch mode operation (leasing/releasing many connections at once).

Usage

Gradle

compile group: 'com.github.akurilov', name: 'netty-connection-pool', version: '1.2.1'

Code Example

final Bootstrap bootstrap = new Bootstrap(); // configure the Netty's bootstrap instance here // your custom channel pool handler final ChannelPoolHandler cph = ... final NonBlockingConnPool connPool = new BasicMultiNodeConnPool( storageNodeAddrs, bootstrap, cph, storageNodePort, connAttemptsLimit ); // optional connPool.preCreateConnections(concurrencyLevel); // use the pool final Channel conn = connPool.lease(); ... connPool.release(conn); // don't forget to clean up connPool.close();

Batch Mode

... // try to get up to 4096 connections per time final int maxConnCount = 0x1000; final List<Channel> conns = new ArrayList<>(maxConnCount); final int availConnCount = connPool.lease(conns, maxConnCount); // use the obtained connections Channel conn; for(int i = 0; i < availConnCount; i ++) { conn = conns.get(i); // use the connection } // release all connections back into the pool connPool.lease(conns);

About

High-performance non-blocking, multi-endpoint connection pool

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages