ØMQ

ØMQ
ØMQ
Developer(s) iMatix Corporation
Stable release 2.1.10 / October 3, 2011; 31 days ago (2011-10-03)
Preview release 3.0.2-beta / October 3, 2011; 31 days ago (2011-10-03)
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

External links