A go tcp connection pool
- gpool support net.Conn interface
- reuse connection in gpool
- get connection from gpool will error when there is no idle connection in gpool
- support block get from gpool when there is no idle connection in gpool with timeout
go get github.com/broadroad/gpool
// create factory to create connection
factory = func() (net.Conn, error) { return net.Dial(network, address) }
// create poolConfig
poolConfig = &PoolConfig{
InitCap: 5,
MaxCap: 30,
Factory: factory,
}
// create a new gpool
p, err := NewGPool(poolConfig)
if err != nil {
fmt.Println(err)
}
// release all connection in gpool
defer p.Close()
// get a connection from gpool, if gpool has no idle connection, it will return error
conn, err := p.Get()
if err != nil {
fmt.Println("Get error: ", err)
}
// return a connection to gpool
defer conn.Close()
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) //3second timeout
defer cancel()
conn, err := p.BlockingGet(ctx)
if err != nil {
fmt.Println("Get error:", err)
}
// return a connection to gpool
defer conn.Close()
conn, err := p.BlockingGet(nil)
if err != nil {
fmt.Println("Get error:", err)
}
// return a connection to gpool
defer conn.Close()
The Apache License 2.0 - see LICENSE for more details
It will be very pleasure if you give some issue or pr. Feel free to contact [email protected]