欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-06 12:26:54
1.服务启动: Windows: 1.在window的环境变量中path加入: E:\nsq-1.0.0-compat.windows-amd64.go1.8\bin 2.打开命令窗口,运行: nsqlookupd 3.打开新的命令窗口,运行: nsqd --broadcast-address=12 ......

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

工众号:李田路口