Need help with pool?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

542 Stars 154 Forks MIT License 44 Commits 6 Opened issues


🚌 A golang general network connection poolction pool

Services available


Need anything else?

Contributors list

No Data


PkgGoDev Go Report Card


A golang universal network connection pool.


  • More versatile, The connection type in the connection pool is
    , making it more versatile
  • More configurable, The connection supports setting the maximum idle time, the timeout connection will be closed and discarded, which can avoid the problem of automatic connection failure when idle
  • Support user setting
    method, used to check the connectivity of connection, invalid connection will be discarded
  • Support connection waiting, When the connection pool is full, support for connection waiting (like the go db connection pool)

Basic Usage:

//factory Specify the method to create the connection
factory := func() (interface{}, error) { return net.Dial("tcp", "") }

//close Specify the method to close the connection close := func(v interface{}) error { return v.(net.Conn).Close() }

//ping Specify the method to detect whether the connection is invalid //ping := func(v interface{}) error { return nil }

//Create a connection pool: Initialize the number of connections to 5, the maximum idle connection is 20, and the maximum concurrent connection is 30 poolConfig := &pool.Config{ InitialCap: 5, MaxIdle: 20, MaxCap: 30, Factory: factory, Close: close, //Ping: ping, //The maximum idle time of the connection, the connection exceeding this time will be closed, which can avoid the problem of automatic failure when connecting to EOF when idle IdleTimeout: 15 * time.Second, } p, err := pool.NewChannelPool(poolConfig) if err != nil { fmt.Println("err=", err) }

//Get a connection from the connection pool v, err := p.Get()

//do something //conn=v.(net.Conn)

//Put the connection back into the connection pool, when the connection is no longer in use p.Put(v)

//Release all connections in the connection pool, when resources need to be destroyed p.Release()

//View the number of connections in the current connection pool current := p.Len()


The connection pool implementation refers to pool , thanks.


The MIT License (MIT) - see LICENSE for more details

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.