github.com/sereiner/library@v0.0.0-20200518095232-1fa3e640cc5f/queue/nsq/nsq.go (about)

     1  package nsq
     2  
     3  import (
     4  	"github.com/nsqio/go-nsq"
     5  	"github.com/sereiner/library/queue"
     6  )
     7  
     8  type nsqClient struct {
     9  	servers []string
    10  	client  *nsq.Producer
    11  }
    12  
    13  // New 根据配置文件创建一个redis连接
    14  func New(addrs []string, conf string) (m *nsqClient, err error) {
    15  	m = &nsqClient{servers: addrs}
    16  	m.client, err = nsq.NewProducer(addrs[0], nsq.NewConfig())
    17  	if err != nil {
    18  		return
    19  	}
    20  	return
    21  }
    22  
    23  // Push 向存于 key 的列表的尾部插入所有指定的值
    24  func (c *nsqClient) Push(key string, value string) error {
    25  	return c.client.Publish(key, []byte(value))
    26  }
    27  
    28  // Pop 移除并且返回 key 对应的 list 的第一个元素。
    29  func (c *nsqClient) Pop(key string) (string, error) {
    30  	return "", nil
    31  }
    32  
    33  // Pop 移除并且返回 key 对应的 list 的第一个元素。
    34  func (c *nsqClient) Count(key string) (int64, error) {
    35  	return 0, nil
    36  }
    37  
    38  // Close 释放资源
    39  func (c *nsqClient) Close() error {
    40  	c.client.Stop()
    41  	return nil
    42  }
    43  
    44  type nsqResolver struct {
    45  }
    46  
    47  func (s *nsqResolver) Resolve(address []string, conf string) (queue.IQueue, error) {
    48  	return New(address, conf)
    49  }
    50  func init() {
    51  	queue.Register("nsq", &nsqResolver{})
    52  }