官网: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. 把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;

    import java.util.Scanner; public class Test2 { public void reverse(String str) { String[] wordArray ...

  2. cocos2d-x WebSocket

    WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道 ...

  3. JQuery的一些简单操作01

    一.JQuery的隐藏和显示效果 1.hide/show/toggle hide隐藏效果,hide(1000)括号里面跟毫秒,show显示效果同样后面括号可以有数值,toggle开关按钮,交替作用隐藏 ...

  4. LeetCode 102

    方法一:(迭代) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...

  5. codeforces 723D(DFS)

    题目链接:http://codeforces.com/problemset/problem/723/D 题意:n*m的矩阵中,'*'代表陆地,'.'代表水,连在一起且不沿海的水形成湖泊.问最少填多少块 ...

  6. W3C代码标准规范

    一.目的: 为什么要遵循标准我们作为生产者实际上只是位于中游,既不是上游的浏览器制造商,他们是标准的真正制定者,也不算是下游,他们是浏览器的终端使用者.这个角色就意味着我们位于一个接口的位置,我们需要 ...

  7. 用powershell批量新增user profile

    SharePoint 2013 新系统,要在User Profile Service里把人全加一下,其实同步ad更方便,但ad里的人太多,没必要全要,只要大中华区就行了,问hr要了一份人员名单,写了个 ...

  8. html默认属性

    对于display为block来说width默认是满长的,即父级得100%,而高度是0,除非手动设置为100%或指定高度.

  9. System.Collections.Generic的各容器类的用法

    演示System.Collections.Generic的各容器类的用法. 包括:Dictionary,KeyValuePair,SortedDic tionary,SortedList,HashSe ...

  10. ubuntu安装rpm包

    ubuntu下的rpm包的安装方法 一般是不能够直接安装的,我们需要一个工具叫alien,先install它吧.然后按照下面择所需. 1.直接安装: alien -i -c filename.rpm ...