zhangmeng
2023-05-16 c936044526eff70d73fbefa3c53963d4cfb2a5c0
README.md
@@ -1,4 +1,54 @@
## nsqclient
# NSQPool
nsq client
NSQPool is a thread safe connection pool for nsq producer. It can be used to
manage and reuse nsq producer connection.
## Install and Usage
Install the package with:
```bash
github.com/qgymje/nsqpool
```
Import it with:
```go
import (
    "github.com/qgymje/nsqpool"
    nsq "github.com/nsqio/go-nsq"
)
```
and use `pool` as the package name inside the code.
## Example
```go
// create a factory() to be used with channel based pool
factory := func() (*nsq.Producer, error) {
    config := nsq.NewConfig()
    return nsq.NewProducer(":4150", config)
}
nsqPool, err := pool.NewChannelPool(5, 30, factory)
producer, err := nsqPool.Get()
producer.Publish("topic", "some data")
// do something with producer and put it back to the pool by closing the connection
// (this doesn't close the underlying connection instead it's putting it back
// to the pool).
producer.Close()
// close pool any time you want, this closes all the connections inside a pool
nsqPool.Close()
// currently available connections in the pool
current := nsqPool.Len()
```
## License
The MIT License (MIT) - see LICENSE for more details