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

silenceper
596 Stars 166 Forks MIT License 44 Commits 8 Opened issues

Description

🚌 A golang general network connection poolction pool

Services available

!
?

Need anything else?

Contributors list

# 17,843
Go
golang
Apache ...
Docker
11 commits
# 3,034
ooxml
golang
excel
beansta...
3 commits
# 46,001
golang
curl
curl-co...
Docker
3 commits
# 282,006
Go
pool
golang
2 commits
# 264,854
Go
skywalk...
pool
golang
1 commit

pool

PkgGoDev Go Report Card

中文文档

A golang universal network connection pool.

Feature:

  • More versatile, The connection type in the connection pool is
    interface{}
    , 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
    ping
    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", "127.0.0.1:4000") }

//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()

Remarks:

The connection pool implementation refers to pool https://github.com/fatih/pool , thanks.

License

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.