Una herramienta que se vuelve relevante para los desarrolladores es RabbitMQ, una solución de mensjaría extensible, gratuita y de código abierto. Es un intermediario de mensajes que comprende AMQP (Protocolo de cola de mensajes avanzado), pero también se puede utilizar con otras soluciones de mensajería populares como MQTT. Es altamente disponible, tolerante a fallas y escalable.
Se implementa en Erlang OTP, una tecnología diseñada para construir sistemas estables, confiables, tolerantes a fallas y altamente escalables que poseen capacidades nativas para manejar un gran número de operaciones concurrentes, como es el caso de RabbitMQ y otros sistemas como WhatsApp, MongooseIM, por mencionar algunos.
En un nivel muy alto, es una capa de middleware que permite a los diferentes servicios de una aplicación se comuniquen entre sí sin preocuparse por la pérdida de mensajes y, al mismo tiempo, proporciona diferentes requisitos de calidad de servicio (QoS, por sus siglas en inglés). También permite un enrutamiento de mensajes detallado y eficiente que permite un amplio desacoplamiento de aplicaciones.
Historia
Desarrollado originalmente por Rabbit Technologies Ltd., que comenzó como una empresa conjunta entre LShift y CohesiveFT en 2007, RabbitMQ fue adquirida en abril de 2010 por SpringSource, una división de VMware. El proyecto pasó a formar parte de Pivotal Software en mayo de 2013.
RabbitMQ consta de:
- El servidor de intercambio RabbitMQ.
- Puertas de enlace para protocolos AMQP, HTTP, STOMP y MQTT.
- Bibliotecas cliente AMQP para Java, .NET Framework y Erlang. (Los clientes AMQP para otros idiomas están disponibles de otros proveedores).
- Una plataforma de complementos para la extensibilidad, con una colección predefinida de complementos compatibles, que incluyen: un complemento «Shovel» que se encarga de mover o copiar (replicar) mensajes de un corredor a otro. Un complemento de «Federación» que permite el intercambio eficiente de mensajes entre corredores (a nivel de intercambio). Un complemento de «administración» que permite la supervisión y el control de corredores y grupos de corredores.
¿Cómo actúa RabbitMQ?
Siguiendo el ejemplo de una aplicación web que permite a los usuarios enviar información y luego genera un PDF, así es como funcionaría en RabbitMQ:
Paso 1: un usuario envía su información que se utilizará para generar el PDF a la aplicación web.
Paso 2: La aplicación web (que es el productor) envía un mensaje «Procesar PDF» a RabbitMQ. Este mensaje también contiene los datos que el usuario proporcionó al enviar la solicitud, como su nombre y dirección de correo electrónico.
Paso 3: Dentro de RabbitMQ, un intercambio (que recibe mensajes y los enruta), recibe el mensaje y lo enruta a la cola correcta.
Paso 4: un consumidor (el trabajador de procesamiento de PDF) recupera el mensaje de la cola y comienza a procesar el PDF.
¿Cuáles son los beneficios de usar RabbitMQ?
RabbitMQ es popular porque tiene varios beneficios que incluyen:
- Reconocimientos y confirmaciones de entrega que aumentan la confiabilidad de la cola de mensajes al reducir la pérdida de mensajes.
- Enrutamiento flexible que permite la entrega de mensajes específicos a colas específicas y consumidores específicos.
- Múltiples tipos de intercambio que permiten diferentes formas de enrutar mensajes a los consumidores.
- Se implementa fácilmente en nubes públicas y empresariales porque es liviano.
Casi no hay nada con lo que RabbitMQ no pueda comunicarse. Pero como todo en la vida, tiene un precio. Aunque configurar RabbitMQ es en su mayor parte sencillo, a veces la mera cantidad de funciones puede ser abrumadora.