Skip to content
KerwinKoo edited this page Jan 8, 2016 · 5 revisions

NSQ使用体验

installing

NSQ的官方安装指南,建议使用go get命令,将NSQ项目源码和依赖库都下到本地方便阅读。

配置完成后,执行项目目录下的“./test.sh”脚本,可生成NSQ的二进制执行文件。

执行测试

服务端测试搭建

1.执行NSQ拓扑监控守护进程:nsqlookupd

nsqlookupd

默认情况下,执行如下命令行参数:

-http-address="0.0.0.0:4161": <addr>:<port>`监听 HTTP 客户端
-tcp-address="0.0.0.0:4160": TCP 客户端监听的 <addr>:<port> 

其中,TCP端用于监听nsqd挂载。

2.另起终端,执行nsqd,并将其挂载到启动后的nsqlookupd监控端口上。

nsqd --lookupd-tcp-address=127.0.0.1:4160

注:nsqd没有对nsqlookupd的HTTP端口挂载。

默认情况下,端口4151为HTTP监听端口,4150为TCP监听端口,向这两个端口发送消息,则会进入NSQD消息队列。

3.开第三个终端,启动NSQ状态监控的WEB UI

nsqadmin --lookupd-http-address=127.0.0.1:4161

此时web 监控UI:nsqadmin挂载的是nsqlookupd的HTTP端口地址。显示地址为http://127.0.0.1:4171/

4.开第四个终端,通过curl命令执行信息发布。

curl -d "hello world 1" "http://127.0.0.1:4151/put?topic=test"

注:NSQ的topic命名,是以该话题的第一个PUBSUB来确定的,并将其创建在nsqd中。同时话题的元数据将会传播给 nsqlookupd 的配置。其他的reader将会通过周期性的查询 nsqlookupd 来发现这个话题。在该命令执行后,会在第二步中执行的nsqd中创建一个名为test的topic。

curl -d 是将信息以POST的形式,发送到4151端口。

客户端(消费者)获取消息测试

简单的服务端架构已经搭建完成,此时打开监控界面可以看到刚刚发布的消息,一条名为“test”的topic,点开后,messagechannel均为1。

创建一个消费者来执行消息读取测试:

nsq_to_file --topic=test --output-dir=tmp --lookupd-http-address=127.0.0.1:4161

此时nsq_to_file便充当了消费者,将消息读取后,存放于目录tmp中的时间戳文件,打开文件会看到我们之前发送的消息体:hello world 1

web UI中也会显示消费者客户端nsq_to_file和对应的接收的信息数及连接状态。

如果同时开启多个nsq_to_file,则只有一个nsq_to_file会接收到新的消息,因为消息一旦交付成功后将会失效,无法被其他消费者接收。

nsq_to_file只是一个简单的消费者客户端,消息的订阅可以使用官方开发的go lib客户端:go-ndq的read和write功能。

[[TOC]]

Clone this wiki locally