nsq使用(writer部分)

来源:转载


nsq是一个由bitly公司使用golang编写的实时消息队列。

nsq官方目前提供了golang,py,js的客户端,本文简单介绍一下golang客户端writer的使用。

官方go客户端库在这里:github.com/bitly/go-nsq

go-nsq提供了上层的读写接口,分别为writer和reader,也就是说,如果你要向nsq发送消息,那么你首先需要使用writer,如果你要从nsq读取消息,你需要建立一个reader。

writer相对简单一些,基本步骤如下:

1、与nsqd服务器建立连接,建立writer

2、使用writer发送消息

基本的代码如下:

package mainimport ("fmt""github.com/bitly/go-nsq")var (wr *nsq.Writer)func openNsq(nsqaddr string) {if nsqaddr == "" {nsqaddr = "127.0.0.1:4150"}wr = nsq.NewWriter(nsqaddr)}func clicks(uid, nid int64) {s := fmt.Sprintf(`{"uid":%d, "nid":%d}`, uid, nid)wr.Publish("clicks", []byte(s))}

从上面的代码可以看出:

1、建立连接使用NewWriter方法,这个方法很简单,只需要提供服务器地址即可。

2、writer使用Publish方法发送消息,Publish方法原型如下:

func (w *Writer) Publish(topic string, body []byte) (int32, []byte, error)

Publish的第一个参数是topic,第二个参数是需要发送消息的内容。如果你不了解什么是topic,请参考官方文档topic。

关于writer:1、writer在go-nsqd的源代码里是一个结构体,并非interface2、writer的Publish方法是同步发送,writer还有PublishAsync方法,用来异步发送消息;还有MultiPublish,同步发送多个消息,MultiPublishAsync,异步发送多条消息;

3、writer使用完后,应该使用Stop方法关闭writer。



分享给朋友:
您可能感兴趣的文章:
随机阅读: