gpool是基于golang channel实现的connection pool,支持connection 重用,并支持Get 和 BlockingGet两种从连接池拿到连接的方法。
使用方法如下:
1. 获得gpool
go get github.com/broadroad/gpool
2. 配置config
// 工厂方法创建连接 factory = func() (net.Conn, error) { return net.Dial(network, address) } // 创建config poolConfig = &PoolConfig{ InitCap: 5, MaxCap: 30, Factory: factory, }
3. 根据config创建pool
// create a new gpool p, err := NewGPool(poolConfig) if err != nil { fmt.Println(err) } // release all connection in gpool defer p.Close()
4. 非阻塞Get,如果没有空闲connection,将直接返回error
conn, err := p.Get() if err != nil { fmt.Println("Get error: ", err) } // return a connection to gpool defer conn.Close()
5. 阻塞方法,配置timeout,超时会返回error
ctx, can