¿Qué es RabbitMQ?

RabbitMQ es un Sistema de colas de mensajes de código abierto que nos permite ejecutar código de nuestras aplicaciones asincronamente.

Beneficios

– Garantía de entrega y orden: Los mensajes se van a consumir en el mismo order en el que se han creado.
– Redundancia: Las colas persisten los mensajes hasta que son procesados por completo.
– Desacoplamiento: Cualquier sistema tercero puede consumir los mensajes e interactuar con ellos, por lo que si queremos que los mensajes los procese alguien que no es el actor que ha creado el mensaje podría hacerlo sin problemas. Esto nos genera un beneficio, ya que un desarrollo puede reutilizarse para muchos proyectos.
– Escalabilidad: Podemos tener un servidor de aplicaciones dedicado a ejecutar los procesos y los otros servidores para la navegacion de la web.

RabbitMQ

¿Cómo funciona?

Por un lado vemos, que hay un ‘Publisher’ que es el encargado de crear los mensajes y mandarlos a un Exchange junto a un ‘routing_key’ a RabbitMQ, el propio RabbitMQ se encarga de almacenar ese mensaje dentro de una cola mediante su ‘routing_key’.

Por otro lado vemos que los consumer (no tiene por que ser el mismo que ha creado el mensaje) se encargan de llamar y recibir los mensajes almacenados dentro de las colas y procesarlos.

Caso de uso

Para uno de los proyectos en el que estamos trabajando, teníamos el reto de descargar los pedidos al ERP y para asegurarnos de que este proceso finaliza correctamente, decidimos usarlo.

Lo que hicimos fue usar el evento ‘checkout_onepage_controller_success_action’ para capturar el pedido una vez finalizado y mandar un mensaje con el ‘entity_id’ del pedido a RabbitMQ , de esta forma nuestros consumers se encargan de leer las colas de RabbitMQ y son los encargados de ejecutar el código que descarga el pedido al ERP.
 
Fuentes: www.beeva.com y  RabbitMQ