ZeroMQ grew out of what would seem to be the obvious initial answer to the question of communicating distributed processes: why not just use sockets? The answer was that the implementation of sockets, while good for a wide area network, did not fit the needs of parallel development. After a certain point, it becomes too difficult to scale sockets as the level of detail can obscure higher-level concerns, such as publish-subscribe patterns and reliable messaging. ZeroMQ layers some helpful functionality on top of the socket interface, while keeping an eye on efficiency and ease of use.
ZeroMQ is not an all-in-one messaging solution. Instead, it can be used to build a variety of different messaging patterns based on what the particular problem calls for. ZeroMQ attempts to keep the familiar socket interface while adding just enough extra functionality to handle the specific needs of parallel computing. It aims, not to solve your problem, but to give you the tools you need to solve your...