- ØMQ
-
ØMQ Developer(s) iMatix Corporation Stable release 2.1.10 / October 3, 2011 Preview release 3.0.2-beta / October 3, 2011 Written in C++ Platform Cross-platform Type Message queue License LGPL Website www.zeromq.org ØMQ (also spelled ZeroMQ, 0MQ or ZMQ) is a high-performance asynchronous messaging library aimed to use in scalable distributed or concurrent applications. It provides a message queue, but unlike message-oriented middleware, a ØMQ system can run without a dedicated message broker. The library is designed to have a familiar socket-style API.
ØMQ is developed by iMatix Corporation together with a large community of contributors. There are third-party bindings for most popular programming languages, from Java and Python to Erlang and Haskell.
Contents
History
On March 30, 2010, iMatix CEO Pieter Hintjens announced that iMatix (the original designer of AMQP) will be stepping out of the AMQP workgroup and will not be supporting AMQP/1.0 (if it ever emerges) in favor of significantly simpler and faster ØMQ.[1]
Technology
The library provides sockets (a kind of generalization over the traditional IP and Unix domain sockets), each of which can represent a many-to-many connection between endpoints. Operating with a message-wise granularity, they require that a messaging pattern be used, and are particularly optimized for that kind of pattern. The basic ØMQ patterns are:
- Request-reply connects a set of clients to a set of services. This is a remote procedure call and task distribution pattern.
- Publish-subscribe connects a set of publishers to a set of subscribers. This is a data distribution pattern.
- Push-pull (pipeline) connects nodes in a fan-out / fan-in pattern that can have multiple steps, and loops. This is a parallel task distribution and collection pattern.
- Exclusive pair connects two sockets in an exclusive pair. This is a low-level pattern for specific, advanced use cases.
Any message through the socket is treated as an opaque blob of data. Delivery to a subscriber can be automatically filtered by the blob leading string.
Available message transports include TCP, PGM (reliable multicast), inter-process communication (IPC) and inter-thread communication (ITC). Utilizing a message batching technique, ØMQ can outperform raw TCP in terms of throughput.[2]
See Also
Advanced Message Queuing Protocol
References
- ^ iMatix will end OpenAMQ support by 2011. openamq-dev maillist.
- ^ How come ØMQ has higher throughput than TCP although it's built on top of TCP? ZeroMQ FAQ.
External links
- Official website
- ØMQ: The Theoretical Foundation
- 0MQ: A new approach to messaging. Linux Weekly News.
- ZeroMQ is the Answer
- ZeroMQ an introduction
- Selecting a Message Queue – AMQP or ZeroMQ
- Why ZeroMQ? -- introductory video
- ZeroMQ: Modern & Fast Networking Stack -- overview with Ruby examples
- ZeroMQ Rsyslog Plugins released by Aggregate Knowledge.
This free software-related article is a stub. You can help Wikipedia by expanding it.