zeromq:c,c++,golang及nodejs使用
Posted 拥剑公子的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zeromq:c,c++,golang及nodejs使用相关的知识,希望对你有一定的参考价值。
官网:www.zeromq.org
消息队列比较:http://www.cnblogs.com/charlesblc/p/6058799.html
zeromq的一些观点:http://www.cnblogs.com/my_life/articles/5293176.html
1.ZeroMQ是一个程序库,rabbitmq则是消息服务器
2.ZeroMQ是面向消息,而socket是面向字节流,zeromq本身会保证消息完整性
3.zeromq你不必考虑I/O与程序阻塞、异步这些麻烦事,zeromq使用无锁的队列完成异步I/O
4.zeromq具有可以缓存消息的异步队列,必要时可以把消息缓存到磁盘
5.生产中会遇到各种路由问题,一对多、多对一、多对多的路由,zeromq提供灵活的现成模式供组合
zeromq不能只看做socket封装,它改变了tcp/udp只能一对一通信模式
参考文章:http://www.cnblogs.com/rainbowzc/p/3357594.html
(1)linux: c,c++核心:https://github.com/zeromq/libzmq
这里面可以下载libzmq-4.2.0.tar.gz和zeromq-4.2.0.tar.gz,两个都是zmq的源码,但前者貌似没有编译脚本,所以使用后者
tar zxf zeromq-4.2.0.tar.gz
cd zeromq-4.2.0/
./configure
make
sudo make install
头文件在:/usr/local/include;lib文件在:/usr/local/lib
(2)linux: c语言测试例程(c语言接口:http://api.zeromq.org):
http://www.cnblogs.com/kaishan1990/p/5636332.html
上面的例子,client/server启动先后顺序没关系,但和server断开后,client不会自动重新连接
c++有封装http://zeromq.org/bindings:cpp,实际这个项目很少有人用
(3)golang
http://zeromq.org/bindings:go
https://github.com/pebbe/zmq4
执行:go get github.com/pebbe/zmq4
linux上很容易过,但windows要小折腾一下,以下方框内:
a.下载tdm64-gcc-5.1.0-2.exe b.cd zeromq-4.2.0\\builds\\mingw32 c.make -f Makefile.mingw32不通过 4.编辑Makefile.mingw32,加入gather.o scatter.o dgram.o 5.生成的libzmq.dll.a拷贝到C:\\TDM-GCC-64\\lib 6.生成的libzmq.dll拷贝到C:\\TDM-GCC-64\\bin 6.zeromq-4.2.0\\include下的文件拷贝到C:\\TDM-GCC-64\\include |
下面测试demo:
cd src\\github.com\\pebbe\\zmq4\\examples
go build hwclient.go
go build hwserver.go
分别运行2个exe文件
(4)node.js
http://zeromq.org/bindings:node-js
例子在:https://github.com/JustinTulloss/zeromq.node
Push/Pull的例子很容易测试通过,不赘述
以上是关于zeromq:c,c++,golang及nodejs使用的主要内容,如果未能解决你的问题,请参考以下文章
rabbitmq, windows/linux, c/c++/node.js/golang/dotnet
2017年的golangpythonphpc++cjavaNodejs性能对比(golang python php c++ java Nodejs Performance)