QUE ES RABBITMQ
RabbitMQ es un message broker de codigo libre, escalable y distibuido, basado inicialmente bajo el protocolo AMQP(Advanced Message Queuing Protocol), actualmente soporta otros protocolos de mensajeria como son STOMP ligero pensado para IoT y MQTT ligero orientado a texto.
CONCEPTOS DE RABBITMQ Y DEL SERVIDOR
Antes de profundizar, aqui algunos conceptos útiles para conocer a RabbitMQ
-
Productor: Aplicación que genera los mensajes.
-
Consumidor: Aplicación que recibe los mensajes.
- Cola: Estructura de como se almacenan los mensajes hasta que son consumidos o eliminados de la cola.
- Mensaje: Datos enviados del productor al consumido
- Conexión: Conexión TCP entre la aplicación y el RabbitMQ (messageBroker)
- Canal: Una conexión virtual dentro de una conexión que se utilizara para generar o consumir los mensajes.
- Intercambio (exchange): Recibe los mensajes de los productores y los envía a la cola segun las reglas definidas.
- Vinculación (binding): Una vinculación es una relación que se crea entre una cola y un intercambio.
- Clave de enrutamiento: La clave que el intercambio mira para decidir cómo enrutar el mensaje a las colas. Piensa en la clave de enrutamiento como la dirección de destino de un mensaje.
- Usuarios: Son creados con permisos asignados como derechos de lectura, escritura y confguración ademas de poder especificar hosts virtuales.
- Vhost: Los hosts virtuales separan las aplicaciones que están usando la misma RabbitMQ.
- Acuses de Recepcion y Confirmaciones: Indicadores de que los mensajes han sido recibidos o se ha actuado sobre ellos.
FLUJO DE TRABAJO
- El productor publica un mensaje al exchange
- El exchange recibe el mensaje y pasa a enrutarlo
- Se establece un enlace entre el excange y la cola.
-
El mensaje espera en la cola hasta que pueda ser aceptado por el consumido
- El consumidor procesa al mensaje
Existe varios tipos de Exchange con los que se puede alterar el trafico
de los mensajes:
EXCHANGE DIRECTO: Se produce cuando hay un vinculo directo entre el productor y el consumidor. Esto se logra cuando la clave de enrutamiento del mensaje coincide con la clave del enrutamiento, enviandolo a un consumidor concreto.
EXCHANGE TOPIC: Funciona de manera similar al exchange directo, sin embargo no necesita que haya una conincidencia exanca, este envia el mensaje a las colas que cumplan un patron definido.
EXCHANGE FANOUT: Este se comporta como un brodcast, enviando el mensaje a
todos los consumidores que esten asociados a este exchange.
En un proximo post, mostrare de forma practica como funciona RabbitMQ.