Je cherche à utiliser ZeroMQ comme couche de messagerie/transport pour un système distribué assez important, ciblant principalement la surveillance et la collecte de données (de nombreux producteurs, quelques consommateurs).
Autant que je puisse voir, il existe actuellement deux implémentations différentes du même concept; ZeroMQ et Crossroads I/O, ce dernier étant un fork de ZeroMQ (en 2012?).
J'essaie de comprendre lequel utiliser et je m'interroge sur les différences entre eux, mais jusqu'à présent, je n'ai pas trouvé beaucoup d'informations à ce sujet.
Par exemple:
Fondamentalement, comment choisir l'un plutôt que l'autre?
Crossroads.io est assez mort depuis que Martin Sustrik a commencé sur une nouvelle pile, en C, appelée nano: https://github.com/250bpm/nanomsg
Crossroads.io n'implémente pas, afaik, ZMTP/1.0 ni ZMTP/2.0 mais sa propre version du protocole.
Nano a des transports enfichables et nous ferons probablement un transport ZMTP pour cela. Nano est vraiment sympa, repenser la librairie originale libzmq, et s'il réussit, cela ferait un bon nouveau noyau.
Idéalement, Nano interagirait à la fois au niveau de l'API et du protocole, donc serait un remplacement enfichable pour libzmq. Il reste cependant un long chemin à parcourir.
Notez qu'il existe maintenant plusieurs réécritures de libzmq émergentes, y compris JeroMQ (Java) et NetMQ (C #). Ces deux implémentent correctement ZMTP/1.0 et ZMTP/2.0. Il existe également d'autres bibliothèques comme Axon (https://github.com/visionmedia/axon) qui sont fortement inspirées par 0MQ mais non compatibles.
Sur la base de l'expérience, les utilisateurs apprécient l'interopérabilité plus que presque toute autre chose, il est donc très probable que différentes piles de type 0MQ finiront par parler les mêmes protocoles.