A golang pool which will support connection pool, buffer pool, goroutine pool. Help developers to use pool easily. Now gpool only support tcp connection pool. It will support other pools soon. And Thanks to https://github.com/fatih/pool, ideas comes from fatih.
- gpool support tcp connection now
- reuse tcp 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
- support lazy connect when real borrow conn from gpool
- support buffer pool
- support goroutine pool
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 tjbroadroad@163.com