RabbitMQ es un middleware de mensajería distribuida desarrollado en el lenguaje Erlang y de código abierto. Es compatible con el Protocolo Avanzado de Colas de Mensajes (AMQP) y con bibliotecas de cliente en varios lenguajes de programación como Java, Golang, PHP y Python.
Características
- Fiabilidad: Garantiza fiabilidad mediante la persistencia de mensajes, soporte de transacciones, confirmación de consumo y transmisión, etc.
- Mecanismo de enrutamiento: Admite modelos de suscripción y consumo principales como difusión, suscripción, coincidencia de encabezados, etc.
- Escalabilidad: Múltiples nodos de RabbitMQ pueden formar un clúster y expandir dinámicamente el clúster según las necesidades comerciales reales.
- Alta disponibilidad: Las colas pueden configurarse como espejos en máquinas del clúster, lo que permite que las colas sigan estando disponibles en caso de problemas con algunos nodos.
- Múltiples protocolos: Además del soporte nativo de AMQP, RabbitMQ también admite múltiples protocolos de middleware de mensajería como STOMP, MQTT, etc.
- Clientes multilingües: RabbitMQ admite casi todos los lenguajes comúnmente utilizados, como Java, Python, Ruby, PHP, C#, JavaScript, etc.
- Interfaz de administración: RabbitMQ proporciona una interfaz fácil de usar para monitorear y administrar mensajes y nodos del clúster.
- Mecanismo de plugin: RabbitMQ proporciona muchos plugins para extensiones extensivas, y los usuarios también pueden escribir sus propios plugins.
Principales casos de uso
Procesamiento Asincrónico
Partes no esenciales o menos importantes del proceso comercial pueden notificarse de forma asincrónica al sistema objetivo mediante notificaciones de mensaje, lo que permite que el proceso comercial principal responda rápidamente sin esperar sincrónicamente los resultados de procesamiento de otros sistemas.
Desacoplamiento de Aplicaciones
La expansión comercial se puede lograr en función de mecanismos de suscripción de mensajes. Por ejemplo, en un escenario de pedido de comercio electrónico, cuando un usuario realiza un pedido, se genera un mensaje de pedido. El módulo de almacén puede suscribirse al mensaje de pedido para el envío, el módulo de puntos puede suscribirse al mensaje de pedido para sumar puntos, y el módulo de SMS puede suscribirse al mensaje de pedido para enviar mensajes de texto, etc.
Reducción de Picos de Carga
Dado que puede haber diferencias en las capacidades de procesamiento de los sistemas aguas arriba y aguas abajo, las colas de mensajes pueden actuar como un regulador para permitir que los sistemas aguas abajo manejen el tráfico de manera constante.
Por ejemplo, en el caso de pagar con éxito un pedido y notificar al almacén para el envío, si el módulo de pedido actual admite una alta concurrencia de 1000 y el envío del almacén solo admite 100, introducir una cola de mensajes puede permitir que el módulo de almacén se suscriba al mensaje de pedido y maneje el envío lentamente en una cola.
P.D.: Es como hacer cola para el metro.