ØMQ

ØMQ （也拼写作ZeroMQ，0MQ或ZMQ)是一个为可伸缩的分布式或并发应用程序设计的高性能异步消息库。它提供一个消息队列, 但是与面向消息的中间件不同，ZeroMQ的运行不需要专门的消息代理（）。该库设计成常见的套接字风格的API。

ZeroMQ是由iMatix公司和大量贡献者组成的社群共同开发的。ZeroQ通过许多第三方软件支持大部分流行的编程语言，从Java和Python到Erlang和Haskell。

 技术 
类库提供一些套接字（对传统Berkeley套接字和Unix domain socket的泛化），每一个套接字可以代表一个端口之间的连接。以消息的粒度进行操作，套接字需要使用一种消息模式（）,然后专门为那种模式进行了优化。

基本的ZeroMQ模式有:

 请求响应模式
 将一组客户端连接到一组服务器。这是一种远程过程调用和任务分发模式。
 发布/订阅模式
 将一组发布者连接到一组订阅者。这是一种数据分发模式。
 管道模式
 以扇出/扇入模式连接节点，可以有多个步骤，可以有循环。这是一种并行的任务分发和收集模式。
 排他对模式
 在一个排他对中连接两个套接字。 （这是一种高级的为某种用例而设计的低级别模式）

任何通过套接字的消息被看作不透明的数据块。发送给订阅者的消息可以自动地通过块最开始的字符串进行过滤。ZeroMQ提供多种消息传输协议，包括TCP，PGM（可靠的多播），进程间通信（IPC） 以及线程间通讯（ITC）。

由于内部线程模型，ZeroMQ的性能非常好，通过利用一种自动消息批处理技术，它甚至在吞吐量上超过了TCP的性能。

ZeroMQ实现了ZMTP, ZeroMQ消息传输协议。 ZMTP定义了向后兼容性的规则，可扩展的安全机制，命令和消息分帧，连接元数据，以及其他传输层功能。不使用完整的ZeroMQ实现，而是直接实现ZMTP协议的项目不断增加。

 历史 
2010年3月30日，AMQP的最初设计者iMatix公司的首席执行官Pieter Hintjens宣布iMatix将退出AMQP工作组，而且为了简单得多，快的多的ZeroMQ，将不支持 可能发布的AMQP/1.0

2011年，欧洲核子研究组织 （CERN）调查了统一用于操作CERN加速器的中间件解决方案的方式，欧洲核子研究组织的研究比较了CORBA，Ice，Thrift，ZeroMQ, YAMI4，RTI和 Qpid (AMQP) ，ZeroMQ得到了最高的分数。

2012年3月，由于在项目控制权上的分歧，一些ZeroMQ的最初开发者建立了ZeroMQ的分支，Crossroads I/O. Crossroads I/O计划使用更常见的“仁慈独裁者”模式，Martin Sustrik将充当仁慈独裁者。

2012年8月，Dongmin Yu宣布了他的纯Java的ZeroMQ实现，JeroMQ. 这激发了更多的ZeroMQ全本地化的移植，例如C#的NetMQ。 

2013年3月, Pieter Hintjens宣布了ZMTP线级协议的新的草案，为ZeroMQ提供了安全机制的可扩展性。

 参见 

 参考文献 

 外部链接 

 ØMQ(ZeroMQ)简介 . InfoQ。
 0MQ: A new approach to messaging . Linux Weekly News.
 ZeroMQ is the Answer  (a talk at PHP UK conference 2012)
 ZeroMQ an introduction
 Selecting a Message Queue – AMQP or ZeroMQ
 Why ZeroMQ?  (introductory video)
 ZeroMQ: Modern & Fast Networking Stack  (overview with Ruby examples)
 ØMQ: The Theoretical Foundation 

Category:自由系統軟體
Category:进程间通信
Category:面向消息的中间件