viernes, 14 de mayo de 2021

Primeros Pasos con RabbitQM

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

  1. El productor publica un mensaje al exchange
  2. El exchange recibe el mensaje y pasa a enrutarlo
  3. Se establece un enlace entre el excange y la cola.
  4. El mensaje espera en la cola hasta que pueda ser aceptado por el consumido
  5. 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.

 

"Soy escritor de libros en retrospectiva. Yo hablo para entender; enseño para aprender." R.F