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 }