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

electron/nodejs实现调用golang函数

2017年的golangpythonphpc++cjavaNodejs性能对比(golang python php c++ java Nodejs Performance)

golang 新人求助 关于格式占位符的问题

zeromq学习记录C语言示例

开源一个golang小程序商城后台(moshopserver)