消息队列NSQ探索(1) quick start

看到好多招聘JD上都要求要有高并发,消息队列的经验,但是咱又没有咋办?那就只好摸着石头过河了呗,找个消息队列来实践一下.
由于我喜欢用golang,所以在对比了NSQ和kafka后,鉴于NSQ是golang写的,直接编译为binary,所以部署会方便一些,所以我们就来探索一下NSQ.

去NSQ的官网https://nsq.io/deployment/installing.html把binary下载下来,解压后得到一套的二进制文件,我在windows下演示,linux应该是差不多的.

nsq_quick_start

  • 第一步,nsqlookupd,启动守护进程,其实从后面可以知道nslookupd是一个管理节点之间拓扑关系的守护进程,所有后面带有后缀d
    daemon

    • 说明当前这个进程占用了4160端口给http使用,在4160端口给tcp协议使用
  • 第二步

    • 另起一个终端,nsqd --lookupd-tcp-address=127.0.0.1:4160 正是上一步我们观察到的tcp协议占用的4160端口
    • nsqd则是真正的接受,入队,分发消息的守护进程,也就是消息队列的核心功能
    • 在这里插入图片描述
    • 而在这里我们就能发现nsqd连接到了之前nsqlookupd监听的4160端口,继而去监听4151端口
  • 第三步nsqadmin --lookupd-http-address=127.0.0.1:4161

    • 在这里插入图片描述
    • 此时我们又发现了nsqadmin又去监听了4171端口,这个是什么呢,就是nsq的web ui监控界面
    • 打开localhost:4171就能看见管理界面了
    • 可以发现刚开始没有任何topic,也没有处理过任何消息的,所以counter也是0
      • 在这里插入图片描述
        在这里插入图片描述接下来 ,我们往里面塞东西看看,curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=test',注意在win下,需要把hello world中的空格更换为横线,总之不要留空格,否则curl命令会去误以为去解析域名而报错,而且要去掉URL的引号
      • 在这里插入图片描述
      • 此时出现了url中设置的topic为test的项目,在这里插入图片描述
  • 此时再跑nsq_to_file --topic=test --output-dir=/tmp --lookupd-http-address=127.0.0.1:4161

  • /tmp更换消息需要存储的路径

  • 为什么需要这个功能呢,因为大流量的时候可能机器会挂掉,但是已经进来的消息不能丢啊,最好还是要进到磁盘里面,后面再继续读取出来,继续出来没处理完的消息

在这里插入图片描述
在这里插入图片描述
这个时候也能发现指定路径下下面生成了log文件,也就是我们从内存里面同步到磁盘的消息,同时,还能发现,这个nsq可能是每个小时都会同步一次,生成一次log文件,(虽然我们还并没有看过详细文档和源码,只是猜测??)

按照官网的操作,发现这个时候,再往里面塞消息,这个时候就能得到发现新加的消息自动的同步到了本地的磁盘,而且计数器告诉我们已经处理了条消息.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

消息队列的用处很多很多,此处不赘述,后续再继续讨论,谢谢大家.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值