1.服务启动:
Windows:
1.在window的环境变量中path加入: E:\nsq-1.0.0-compat.windows-amd64.go1.8\bin
2.打开命令窗口,运行:
3.打开新的命令窗口,运行:
4160是nsqd与lookupd进行tcp连接的端口;
-broadcast-address=127.0.0.1防止地址被解析私有ip;
-mem-queue-size=0是消息持久化到磁盘;
4.打开新的命令窗口,运行:
4161是nsqadmin与lookupd进行http连接的端口;
5.打开支持curl命令的窗口(git bash)运行:
4151是nsqd http请求的接口;
6.至此,整个运行和产生消息的过程就完成了,打开:http://127.0.0.1:4171/即可看到对应的可视化页面,看到自己的消息队列;
7.打开新的命令窗口,运行:
消费消息,打印到日志文件;
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.一个通道可以连接多个客户端,每条消息都传递给客户端,消息均匀分发,负载均衡;如果队列中有消息未被消费,启动消费时消息可能被一个客户端独自消费。
公众号:李田路口