官网: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使用的更多相关文章

  1. 关于协程:nodejs和golang协程的不同

    nodejs和golang都是支持协程的,从表现上来看,nodejs对于协程的支持在于async/await,golang对协程的支持在于goroutine.关于协程的话题,简单来说,可以看作是非抢占 ...

  2. golang后台任务库

    功能需求 本来想用linux自带的corntab,然而corn调试困难,而且不支持以下需求 能分布式 有http接口 能调试 有统计 kala 这个需求也不算小众,于是在网上查了一下,果然有,而且还比 ...

  3. 为什么golang的开发效率高(编译型的强类型语言、工程角度高、在开发上的高效率主要来自于后发优势,编译快、避免趁编译时间找产品妹妹搭讪,既是强类型语言又有gc,只要通过编译,非业务毛病就很少了)

    作者:阿猫链接:https://www.zhihu.com/question/21098952/answer/21813840来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  4. 聚光灯下的熊猫TV技术架构演进

    2015年开始的百播大战,熊猫TV是其中比较特别的一员. 说熊猫TV是含着金钥匙出生的公子哥不为过.还未上线,就频频曝光,科技号,微博稿,站上风口浪尖.内测期间更是有不少淘宝店高价倒卖邀请码,光内测时 ...

  5. 我的Shell + VIM配置

    1. 安装powerline-shell 下载powerline-shell # cd /opt/ # git clone https://github.com/milkbikis/powerline ...

  6. 【熊猫TV】《程序员》:聚光灯下的熊猫TV技术架构演进

    2015年开始的百播大战,熊猫TV是其中比较特别的一员. 说熊猫TV是含着金钥匙出生的公子哥不为过.还未上线,就频频曝光,科技号,微博稿,站上风口浪尖.内测期间更是有不少淘宝店高价倒卖邀请码,光内测时 ...

  7. java、ruby、python、php等如何生成excel文档?

    excel在我们日常工作生活中会经常用到,通常我们都是用office软件去编写文档.但是对于格式一致的excel文档,如果还是使用人工完成,那绝不是我们软件工程师的姿态了~ 下面我就介绍一种方法,不需 ...

  8. Build Telemetry for Distributed Services之Open Telemetry来历

    官网:https://opentelemetry.io/ github:https://github.com/open-telemetry/ Effective observability requi ...

  9. python、java、ruby、node等如何提取office文档中的内容?

    我相信大家都有过这样的需求,把doc.ppt.excel.pdf.txt中的文本内容提取出来.提取出来的文本内容可用于文档内容的全文索引,文档的基本内容摘要等.在度娘上搜索“如何提取文档内容”,确实有 ...

随机推荐

  1. Android AsyncTask异步任务(二)

    之前我们讲过了AsyncTask 的生命周期(onPreExecute-->doInBackground-->onProgressUpdate-->onPostExecute),今天 ...

  2. sqlite的常用语法

    sqllite 增删改查创建表的语法 创建表db.execSQL("create table user(_id integer primary key autoincrement,numbe ...

  3. Android基本布局

    android基本布局有三种:LinearLayout,RelativeLayout,FrameLayout. 一.LinearLayout 1,这是一种垂直布局(或者水平布局),可以通过下面这一句来 ...

  4. [Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验

    1. ssh客户端生成key $ Generating public/private rsa key pair. Enter file in which to save the key (/Users ...

  5. C#数组全解

    数组概述 C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意. 声明数组时,方括号 ([]) 必须跟在类型后面,而不 ...

  6. renderman、arnold及全局光照

    走马观花看了一些实现全局光(global illumination)的文章,都是非实时电影级的.的确可以分为两个阵营,一是pixar的renderman中常用的reyes+点云,感觉pixar一路走来 ...

  7. WPF程序如何自定义启动窗口并传参

    首先,找到App.xaml,将Application标签中的StartupUri属性去掉; 然后可以在MainWindow.xaml.cs中重载构造函数,并添加自己想要的参数; 然后在App.xaml ...

  8. HDU 5884 (贪心)

    problem sort 题目大意 有n个数组,每个数组有a[i]个元素,每次可以将至多k个数组合并为一个数组,所花费代价为这些数组的元素和.给定代价上限,求将所有数组合并为1个数组的最小k. 解题分 ...

  9. 救援linux

    挂载分区 mount /dev/sdaX /mnt/ 挂载其他 mount --bind /dev/ /mnt/dev/ mount --bind /proc/ /mnt/proc/ mount -- ...

  10. 附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法

    无法打开物理文件 XXX.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120)   找到xxx.MDF与xx ...