官網: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的例子很容易測試通過,不贅述