AMQP, ou
Advanced Message Queuing Protocol, est un protocole standard ouvert pour les MOM, ou
Message Oriented Middleware. Pour résumer, c'est un protocole de message entre serveurs offrant des mécanismes de files d'attente, de routage (point à point et par diffusion/abonnement), de fiabilité, et de sécurité. Citons les implémentations OpenAMQ (en C, sous GPLv3) ou RabbitMQ (en erlang, sous MPL).
Le sujet n'est pas nouveau, mais iMatix considère ce standard comme dépassé et en propose un nouveau, ØMQ ou ZeroMQ, avec une implémentation de qualité : légèreté, facilité d'intégration et performances. iMatix a pendant un temps développé OpenAMQ, mais soutient et développe désormais le projet ØMQ.
Que vous utilisiez Ruby, Python ou C n'est pas un problème, les
bindings existent déjà. Vous pouvez vous en rendre compte en consultant le
livre de recettes. La bibliothèque est elle-même développée en C++, sous licence LGPL.
Le transport des messages entre les nœuds est assuré par différents biais selon la disponibilité des moyens : TCP/IP,
PGM, InfiniBand ou encore
socket Unix dans le cas de communications internes. L'interface proposée permet d'implémenter de façon concise les principaux usages de messagerie inter-applications : requête/réponse, abonnement/notification, éventuellement avec restriction à un sujet particulier. L'utilisation de fonctions avancées comme le
zero-copy ou le scatter-gather est rendue possible dans les dernières versions de la bibliothèque.