ØMQ
Encyclopedia
ØMQ is a high-performance
High-throughput computing
High-throughput computing is a computer science term to describe the use of many computing resources over long periods of time to accomplish a computational task.-Challenges:...

 asynchronous messaging
Message passing
Message passing in computer science is a form of communication used in parallel computing, object-oriented programming, and interprocess communication. In this model, processes or objects can send and receive messages to other processes...

 library aimed at use in scalable distributed or concurrent applications. It provides a message queue
Message queue
In computer science, message queues and mailboxes are software-engineering components used for interprocess communication, or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content...

, but unlike message-oriented middleware
Message-oriented middleware
Message-oriented middleware is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple...

, a ØMQ system can run without a dedicated message broker
Message broker
Message broker is an intermediary program which translates the language of a system from one internationally recognized language to another by way of a telecommunications medium.-Pattern:...

. The library is designed to have a familiar socket
Berkeley sockets
The Berkeley sockets application programming interface comprises a library for developing applications in the C programming language that perform inter-process communication, most commonly for communications across a computer network....

-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
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 and Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 to Erlang and Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

.

History

On March 30, 2010, iMatix CEO Pieter Hintjens
Pieter Hintjens
Pieter Hintjens is a Belgian software developer, writer, and past president of the Foundation for a Free Information Infrastructure , an association that fights against software patents...

 announced that iMatix (the original designer of AMQP
Advanced Message Queuing Protocol
The Advanced Message Queuing Protocol is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing , reliability and security.AMQP mandates the behaviour of the messaging provider and client to the extent...

) 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.

Technology

The library provides sockets (a kind of generalization over the traditional IP
Internet socket
In computer networking, an Internet socket or network socket is an endpoint of a bidirectional inter-process communication flow across an Internet Protocol-based computer network, such as the Internet....

 and Unix domain socket
Unix domain socket
A Unix domain socket or IPC socket is a data communications endpoint for exchanging data between processes executing within the same host operating system. While similar in functionality to...

s), each of which can represent a many-to-many
Many-to-many
Many-to-many is a term that describes a communication paradigm and an associated media form. It is the third of three major Internet computing paradigms...

 connection between endpoints
Communication endpoint
A communication endpoint is an interface exposed by a communicating party or by a communication channel. An example of the latter type of a communication endpoint is a publish-subscribe topic or a group in group communication systems....

. 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
    Request-response
    Request-response or request-reply is one of the basic methods computers use to talk to each other. When using request-response, the first computer requests some data and the second computer responds to the request. Usually there is a series of such interchanges until the complete message is sent. ...

    connects a set of clients to a set of services. This is a remote procedure call
    Remote procedure call
    In computer science, a remote procedure call is an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space without the programmer explicitly coding the details for this remote interaction...

     and task distribution pattern.
  • Publish-subscribe
    Publish/subscribe
    Publish–subscribe is a messaging pattern where senders of messages, called publishers, do not program the messages to be sent directly to specific receivers, called subscribers. Published messages are characterized into classes, without knowledge of what, if any, subscribers there may be...

    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
    Parallel computing
    Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently . There are several different forms of parallel computing: bit-level,...

     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
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...

, PGM
Pragmatic General Multicast
Pragmatic General Multicast is a reliable multicast transport protocol. PGM provides a reliable sequence of packets to multiple recipients simultaneously, making it suitable for applications like multi-receiver file-transfer.-Overview:...

 (reliable multicast), inter-process communication (IPC
Inter-process communication
In computing, Inter-process communication is a set of methods for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC methods are divided into methods for message passing, synchronization, shared...

) and inter-thread communication (ITC). Utilizing a message batching technique, ØMQ can outperform raw TCP in terms of throughput.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK