Table of Contents:

开源点评:ZeroMQ 简介(编程随想的博客) https://program-think.blogspot.com/2011/08/opensource-review-zeromq.html

ZMQ:高效、快速、多功能的通信库

通俗地说,ZMQ 是一个开源的、跨语言的、非常简洁的、非常高性能、非常灵活、适用于多种通讯环境、支持多种通讯模式的网络通讯库。
ZMQ 不仅是一个单纯的网络通信库,更像是一个高级的异步并发框架。
Zero Message Queue——零延迟的消息队列,意味着它除了可 以收发数据外,还可以用作消息中间件,解耦多个应用服务之间的强依赖关系,搭建高效、 有弹性的分布式系统,从而超越原生的 Socket。

ZMQ 是用 C++ 开发的,但出于兼容的考虑,对外提供的是纯 C 接口。不过它也有很多
C++ 封装,这里我选择的是自带的 cppzmq,虽然比较简单,但也基本够用了。
由于 ZMQ 把自身定位于更高层次的“异步消息队列”,所以它的用法就不像 Socket、
HTTP 那么简单直白,而是定义了 5 种不同的工作模式,来适应实际中常见的网络通信场景。
* 原生模式(RAW),没有消息队列功能,相当于底层 Socket 的简单封装;
* 结对模式(PAIR),两个端点一对一通信;
* 请求响应模式(REQ-REP),也是两个端点一对一通信,但请求必须有响应;
* 发布订阅模式(PUB-SUB),一对多通信,一个端点发布消息,多个端点接收处理;
* 管道模式(PUSH-PULL),或者叫流水线,可以一对多,也可以多对一。