Golang消息队列:NSQ简单介绍与使用

1.服务启动:

Windows:
1.在window的环境变量中path加入:
E:\nsq-1.0.0-compat.windows-amd64.go1.8\bin

2.打开命令窗口,运行:

nsqlookupd

3.打开新的命令窗口,运行:

nsqd --broadcast-address=127.0.0.1 --mem-queue-size=0 --lookupd-tcp-address=127.0.0.1:4160

4160是nsqd与lookupd进行tcp连接的端口;
-broadcast-address=127.0.0.1防止地址被解析私有ip;
-mem-queue-size=0是消息持久化到磁盘;

4.打开新的命令窗口,运行:

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

4161是nsqadmin与lookupd进行http连接的端口;

5.打开支持curl命令的窗口(git bash)运行:

curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=test'

4151是nsqd http请求的接口;

6.至此,整个运行和产生消息的过程就完成了,打开:
http://127.0.0.1:4171/
即可看到对应的可视化页面,看到自己的消息队列;

7.打开新的命令窗口,运行:

nsq_to_file --topic=test --output-dir=E:/nsq-logs --lookupd-http-address=127.0.0.1:4161

消费消息,打印到日志文件;

Linux:
步骤和Windows类似;
后台启动,命令加上:nohup ./*** & 即可;

2.端口介绍:

1.外网访问必须开放4150,4151,4160,4161,4171等几个端口;

2.nsqlookupd 监听两个端口:
4160 TCP 用于接收nsqd的广播,记录nsqd的地址以及监听TCP/HTTP端口等;
4161 HTTP 用于接收客户端发送的管理和发现操作请求,增删话题,节点等管理查看性操作等;
当Consumer进行连接时,返回对应存在Topic的nsqd列表;

3.nsqd监听两个端口:
4151 HTTP Producer使用HTTP协议的curl等工具生产数据;Consumer使用HTTP协议的curl等工具消费数据;
4150 TCP Producer使用TCP协议的nsq-j等工具生产数据;Consumer使用TCP协议的nsq-j等工具消费数据;

4.nsqadmin监听一个端口:
4171 HTTP 用于管理页面;

5.使用地址http://127.0.0.1:4171打开管理页面;

注:官方推荐使用HTTP方式生产消费数据,不推荐TCP。

3.Topic和Channel之间的关系:

1.主题和频道没有事先配置:通过发布指定主题,或订阅指定主题,在首次使用时创建主题;通过订阅指定主题的频道,在首次使用时创建频道;

2.一个topic可以有一个或多个channel,每个channel都是topic的完整副本,会收到主题的所有消息;多个channel是为了消费者对收到的消息执行不同的工作,比如ch1收到所有的数据,按照自身逻辑处理完,发送给A,ch2也收到所有的数据,按照自身逻辑处理完,发送给B;

3.一个通道可以连接多个客户端,每条消息都传递给客户端,消息均匀分发,负载均衡;如果队列中有消息未被消费,启动消费时消息可能被一个客户端独自消费。

工众号:李田路口

posted @ 2020-03-13 08:17  南方有嘉木1993  阅读(413)  评论(0编辑  收藏  举报