ØMQ (also seen as ZeroMQ, 0MQ, zmq) looks like an embeddable networking library but acts like a concurrency framework.
It gives you sockets that carry atomic messages across various transports like in-process, inter-process, TCP, and multicast.
You can connect sockets N-to-N with patterns like fanout, pub-sub, task distribution, and request-reply. It's fast enough to be the fabric for clustered products.
Its asynchronous I/O model gives you scalable multicore applications, built as asynchronous message-processing tasks. ØMQ has a score of language APIs and runs on most operating systems.
ØMQ comes with the low-level C API. High-level bindings exist in 40+ languages including Python, Java, PHP, Ruby, C, C++, C#, Erlang, Perl, and more.
0MQ is very fast because it's already getting 30 micro-seconds end-to-end latencies and over 3 million messages a second today.
ØMQ is intended to be POSIX compliant and is compatible with the following platforms:
· Mac OS X (tested on 10.5)
· Linux (tested on Debian 4.0, Ubuntu 8.0.4)
· FreeBSD (tested on 5.5 release)
· Solaris (tested on 8, 10)
Here are some key features of "0MQ":
· Faster than TCP, for clustered products and supercomputing.
· Carries messages across inproc, IPC, TCP, and multicast.
· Connect N-to-N via fanout, pubsub, pipeline, request-reply.
· Asynch I/O for scalable multicore message-passing apps.
· Large and active open source community.
· 30+ languages including C, C++, Java, .NET, Python.
· Most OSes including Linux, Windows, OS X.
Requirements:
· Apple Xcode (to build from source)
What's New in This Release: [ read full changelog ]
· LIBZMQ-526 Assertion failure "Invalid argument (tcp_connecter.cpp:285)"
· LIBZMQ-446 Setting the DSCP bits by default causes CAP_NET_ADMIN error
· LIBZMQ-496 Crash on heavy socket opening/closing: Device or resource busy (mutex.hpp:90)
· LIBZMQ-462 test_connect_delay fails at test_connect_delay.cpp:80
· LIBZMQ-497 Messages getting dropped
· LIBZMQ-488 signaler.cpp leaks the win32 Event Handle
· LIBZMQ-476 zmq_disconnect has no effect for inproc sockets
· LIBZMQ-475 zmq_disconnect does not sent unsubscribe messages