nsq使用(writer部分)

铁哥 · · 3241 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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 main

import (
	"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的源代码里是一个结构体,并非interface
2、writer的Publish方法是同步发送,writer还有PublishAsync方法,用来异步发送消息;还有MultiPublish,同步发送多个消息,MultiPublishAsync,异步发送多条消息;

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


有疑问加站长微信联系(非本文作者)

本文来自:铁哥的博客

感谢作者:铁哥

查看原文:nsq使用(writer部分)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3241 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传