nsq初探
一. 安装
参考:
http://nsq.io/deployment/installing.html
http://www.baiyuxiong.com/?p=873 (推荐.)
不推荐直接把官方的Binary Releases版本down下来扔bin目录.
建议用“Building From Source”方式(看下面的步骤),这样可以把source下到$GOPATH/src里并同时把程序build到$GOPATH/bin里. (然后可以把这个bin目录添加到环境变量$sudo vi /etc/profile加一行:export PATH=$PATH:$GOPATH/bin.)
步骤:
(假设已经有golang环境)
1.VPNFQ. (因为需要访问code.google.com)
2.sudo chown -R xiaou $GOPATH #这个在搞golang环境的时候就设置过了.不搞的话,go get会报错.
接下来才是真正的nsq安装步骤:
3.go get github.com/kr/godep
4.go get github.com/bmizerany/assert
5.godep get github.com/bitly/nsq/...
执行之后在$GOPATH/bin下会有很多可执行文件.
二 部署与测试
依次在不同终端执行这些命令:
1.nsqlookupd
2.nsqd --lookupd-tcp-address=127.0.0.1:4160
3.nsqadmin --lookupd-http-address=127.0.0.1:4161
4.curl -d "hello world 1" "http://127.0.0.1:4151/put?topic=test"
5.nsq_to_file --topic=test --output-dir=F:\tmp --lookupd-http-address=127.0.0.1:4161
6.curl -d "hello world 2" "http://127.0.0.1:4151/put?topic=test"
curl -d "hello world 3" "http://127.0.0.1:4151/put?topic=test"
浏览器访问:http://127.0.0.1:4171/
这些,nsqlookupd是枢纽。nsqd是接受和转发消息的服务。nsqadmin是多余的,一个查看服务状态web页面。nsq_to_file是消息的消费者。curl -d是以http的post方式向nsqd发出消息,即消息的生产者。可见,对于nsq消息分发系统来说,只有nsqlookupd+nsqd是必须的。
图解:
三 python写的 发送者和消费者
这是nsq官方写的python库. 在这里:https://github.com/bitly/pynsq
安装:
pip install pynsq
测试:
首先执行命令:
1.nsqlookupd
2.nsqd --lookupd-tcp-address=127.0.0.1:4160
然后写py脚本并运行:
(文档:https://pynsq.readthedocs.org/en/latest/writer.html)
#消费者:
import nsq
def handler(message):
print message.body
return True
r = nsq.Reader(message_handler=handler,
nsqd_tcp_addresses=['127.0.0.1:4150'],
topic='test_topic', channel='asdfxx', lookupd_poll_interval=15)
nsq.run() #这run调用了tornado.ioloop.IOLoop.instance().start()
#生产者:
import nsq
import tornado.ioloop
import time
def pub_message():
def finish_pub(conn, data):
print data
writer.pub('test_topic', time.strftime('%H:%M:%S'), finish_pub)
writer = nsq.Writer(['127.0.0.1:4150'])
tornado.ioloop.PeriodicCallback(pub_message, 5000).start()
nsq.run()
nsq初探的更多相关文章
- 深入NSQ 之旅[转载]
介绍 NSQ是一个实时的分布式消息平台.它的设计目标是为在多台计算机上运行的松散服务提供一个现代化的基础设施骨架.这篇文章介绍了 基于go语言的NSQ的内部架构,它能够为高吞吐量的网络服务器带来 性能 ...
- 初探领域驱动设计(2)Repository在DDD中的应用
概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...
- CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探
CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...
- 从273二手车的M站点初探js模块化编程
前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...
- JavaScript学习(一) —— 环境搭建与JavaScript初探
1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...
- .NET文件并发与RabbitMQ(初探RabbitMQ)
本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址:http://www.cnblogs.com/tdws/p/5860668.html 想必MQ这两个字母对于各位前辈们和老司 ...
- React Native初探
前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...
- 【手把手教你全文检索】Apache Lucene初探
PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程,仅供各位程序猿们参考,这其中不涉及任何私密话题,因此也 ...
- Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性 ...
随机推荐
- {"读取 XML 数据时,超出最大名称表字符计数配额(16384)。。。。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxNameTableCharCount 属性,。。
这个问题倒腾了快一周,看了网上各种解决方案,还看了用谷歌翻译看了全英文的,参照了修改也没能够解决问题. 最后只有自己一行一行断点,一行一行删除代码,各种检测.主要是我在webservice里面新添加几 ...
- [php-src]窥探Php内核中的数组与面向对象
内容均以php5.6.14为例. 扩展中定义一个类有以下四步: #1. 声明一个存储类信息的指针. zend_class_entry *errs_ce; #2. 定义方法的参数信息,类的方法实现. Z ...
- 怎么计算Oracle的表一条记录占用空间的大小
如何计算Oracle的表一条记录占用空间的大小? 如何计算Oracle的表记录占用空间的大小? 是把所有字段的大小都加起来吗?varchar(256),char,number算几个字节? ------ ...
- HTML5+CSS3学习笔记(一)
HTML5+CSS3概述 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已经可以预见,那就是HTML ...
- 【洛谷P3197】越狱
本来还想了一会dp-- 然而一看数据范围明显是数论-- 那么推一推.. 我们发现可以用总方案数减去不会越狱的方案数 那么我们考虑在长度为n的数列中填数 首先第一个位置有m种选择,后面的位置: 总方案: ...
- js读写Cookie问题(Cookie存储时长、Cookie存储域)汇总
在采集网站用户行为数据/使用js对用户行为做交互时,经常会使用到Cookie,了解Js Cookie的读写,以及一些细节,非常重要. 什么是Cookie 所谓Cookie,只是一条极为短小的信息, ...
- textField设置输入文字距左边的距离
1.设置tetxField的内边距 [self.yourTextField setValue:[NSNumber numberWithInt:5] forKey:@"paddingTop&q ...
- Ubuntu 16.04 启动错误 "a start job is running for hold until boot process finishes up"
老司机也差点翻船... 升级16.04的时候,将默认启动管理器(default display manager)选为gm3(gnome3)了(应该使用默认的lightgm)如果改成gm3,好像是nvi ...
- mysql下载安装
1.下载 下载地址:http://dev.mysql.com/downloads/mysql/ 根据电脑配置来选,我选了 windows(x86,64-bit),ZIP Archive这个,点击Dow ...
- Ubuntu 16.04 下使用Xampp
Ubuntu 16.04 下使用Xampp 什么是Xampp? XAMPP(Apache+MySQL+PHP+PERL) 是一个功能强大的建站集成软件包.这个软件包原来的名字是 LAMPP,但是为了避 ...