简单介绍一下nsq.

参考 http://feilong.me/2013/05/nsq-realtime-message-processing-system 的介绍:NSQ是由知名短链接服务商bitly用Go语言开发的实时消息处理系统,具有高性能、高可靠、无视单点故障等优点,是一个非常不错的新兴的消息队列解决方案。

nsq易于配置和部署,所有参考都通过命令行指定,编译好的二进制文件,没有其它依赖项。而且支持多种消息格式。

源码下载地址:

https://github.com/nsqio/nsq

本系列文档下载的源码为0.2.27版本。

为更好的理解源码,最理想的起步当然是先了解nsq的用法。所以接下来会先讲解nsq的安装、使用。

安装nsq

1、安装golang环境。

2、安装godep,在命令行执行:

1
go get github.com/kr/godep

如果在使用go get 安装过程中报错,可以参考另一篇文章:关于go get安装git golang项目时报错的处理办法

安装之后,在%GOPATH%/bin目录下会看到有godep.exe,然后记得将%GOPATH%/bin配置到环境变量里,以后在命令行就可以直接输入godep命令来执行一些操作了。

3、安装assert,在命令行执行:

1
go get github.com/bmizerany/assert

4、接下来开始获取nsg的代码并编译。

在命令行执行:

1
godep get github.com/bitly/nsq/...

注意:后面有三个点不能少。
执行之后在%GOPATH%/bin下会有很多nsq打头的exe文件存在。
至此安装就结束了。

使用nsq

总共需要打开五个命令行窗口。
第一个执行:

1
nsqlookupd

第二个执行:

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

第三个执行:

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

第四个执行:

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

第五个执行:

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

这个命令中的output-dir参数,表示数据文件保存在目录,可以根据需要修改。
再回到第四个窗口,执行

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

经过这一串操作后,可以开始看成果了:
浏览器访问:http://127.0.0.1:4171/,
可以看到数据统计分析的页面。

打开output-dir参数设置的目录,如本例中的F:\tmp,打开里面的一个记事本文件,看到有三行:
hello world 1
hello world 2
hello world 3

至此,安装和使用就结束了。

到目前为止,我们还停留在知其然,不知其所以然的地步。完全搞不懂上面这些使用的命令行在干什么,也没理解nsq的使用价值在哪里。不过本篇呢,还是要结束了,欲知后事如何,且听下回分解。

go语言nsq源码解读一-基本介绍的更多相关文章

  1. go语言nsq源码解读八 http.go、http_server.go

    这篇讲另两个文件http.go.http_server.go,这两个文件和第六讲go语言nsq源码解读六 tcp.go.tcp_server.go里的两个文件是相对应的.那两个文件用于处理tcp请求, ...

  2. (转)go语言nsq源码解读二 nsqlookupd、nsqd与nsqadmin

    转自:http://www.baiyuxiong.com/?p=886 ---------------------------------------------------------------- ...

  3. go语言 nsq源码解读三 nsqlookupd源码nsqlookupd.go

    从本节开始,将逐步阅读nsq各模块的代码. 读一份代码,我的思路一般是: 1.了解用法,知道了怎么使用,对理解代码有宏观上有很大帮助. 2.了解各大模块的功能特点,同时再想想,如果让自己来实现这些模块 ...

  4. go语言nsq源码解读七 lookup_protocol_v1.go

    本篇将解读nsqlookup处理tcp请求的核心代码文件lookup_protocol_v1.go. 1234567891011121314151617181920212223242526272829 ...

  5. go语言nsq源码解读二 nsqlookupd、nsqd与nsqadmin

    nsqlookupd: 官方文档解释见:http://bitly.github.io/nsq/components/nsqlookupd.html 用官方话来讲是:nsqlookupd管理拓扑信息,客 ...

  6. go语言nsq源码解读九 tcp和http中channel、topic的增删

    通过前面多篇文章,nsqlookupd基本已经解读完毕了,不过在关于channel和topic的增删上还比较模糊,所以本篇将站在宏观的角度来总结一下,tcp.go和http.go两个文件中关于chan ...

  7. go语言nsq源码解读六 tcp.go、tcp_server.go

    本篇讲nsqlookupd中tcp.go.tcp_server.go tcp_server.go位于util目录下. 12345678910111213141516171819202122232425 ...

  8. go语言 nsq源码解读四 nsqlookupd源码options.go、context.go和wait_group_wrapper.go

    本节会解读nsqlookupd.go文件中涉及到的其中三个文件:options.go.context.go和wait_group_wrapper.go. options.go 123456789101 ...

  9. go语言nsq源码解读五 nsqlookupd源码registration_db.go

    本篇将讲解registration_db.go文件. 1234567891011121314151617181920212223242526272829303132333435363738394041 ...

随机推荐

  1. javah tool for Android Native Application

    javah可以在Eclipse中配置成为External Tools,选择External Tools Configurations,配置如下,经过测试通过. Location: ${system_p ...

  2. miniUI Grid添加汇总行,Grid绑定数据,IDEA免编译设置

    坑1: 2017-6-5周二,上午解决了昨天摸索一下午的问题,使用miniui显示汇总行数据,要点有这么几个 在创建Grid div的时候一定要加上以下两个属性: //显示汇总行开关 showSumm ...

  3. iOS 博客资源精选

    摘要:记录一些网上非常牛的人写的博文.收藏起来. 以备日后需要时学习备用. 1:iOS中UIWebView的Javascript与Objective-C通信 http://imchao.net/201 ...

  4. FreeMarker系列学习笔记

    FreeMarker是一个非常优秀的模板引擎,这个模板引擎可用于任何场景,FreeMarker负责将数据模型中的数据合并到模板中,从而生成标准输出.FreeMarker可以提供昜好的团队协作,对于界面 ...

  5. python单线程,多线程和协程速度对比

    在某些应用场景下,想要提高python的并发能力,可以使用多线程,或者协程.比如网络爬虫,数据库操作等一些IO密集型的操作.下面对比python单线程,多线程和协程在网络爬虫场景下的速度. 一,单线程 ...

  6. Android优秀github项目整理

    1.照相选相册,裁剪的 library TakePhotohttps://github.com/crazycodeboy/TakePhoto 2几行代码快速集成二维码扫描功能https://githu ...

  7. element.dispatchEvent is not a function的解决

    Firebug中的出错提示: element.dispatchEvent is not a function element.dispatchEvent(event); prototype.js (第 ...

  8. Vim PHP环境设置文章

    可能有重复: 在ubuntu 上配置vim的PHP开发环境 http://blog.csdn.net/robertaqi/article/details/6117546 手把手教你把Vim改装成一个I ...

  9. Android 加载GIF图最佳实践

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75578109 本文出自[赵彦军的博客] 起因 最近在项目中遇到需要在界面上显示一个 ...

  10. C++ 延时等待(sleep/timer/wait)

    原文链接:http://blog.csdn.net/tangweide/article/details/7063747 (-)使用_sleep()函数 #include <iostream> ...