Crea una aplicación con RabbitMQ
RabbitMQ es un software que las empresas utilizan como mediador entre microservicios para que diferentes partes de un sistema puedan comunicarse de forma segura y rápida, lo que permite enviar la misma solicitud a diferentes servicios al consumidor o ponerla en fila cuando el servicio al consumidor aún no está disponible. Es muy bueno para manejar grandes cantidades de datos y admite muchos tipos de comunicación.
Muchas empresas utilizan RabbitMQ en industrias como las finanzas, las telecomunicaciones, la atención médica y la tecnología. Ayuda a las empresas a comunicarse de forma más eficaz. Además, también tiene muchas funciones diferentes y útiles.
Si estás interesado/a en desarrollar sistemas distribuidos, ser un/a profesional de DevOps o un/a arquitecto/a de software, aprender sobre RabbitMQ puede resultarte muy útil para mejorar tus habilidades y brindarte ventajas en el mercado laboral.
Algunas de las empresas de tecnología más grandes del mundo como Uber, Google y Netflix utilizan RabbitMQ en sus arquitecturas de software. Pero al fin y al cabo, ¿cómo se utiliza en la práctica?
¿Para qué se usa RabbitMQ?
Debido a su alta capacidad de procesamiento y múltiples herramientas, RabbitMQ es importante para trabajar con datos porque, normalmente, pone en fila solicitudes y evita la pérdida de éstos. De igual forma, también es muy utilizado para chats, servicios de pago y varias opciones más.
En el caso de Uber, la tecnología se utiliza para procesar millones de mensajes por segundo en su arquitectura de microservicios. Google utiliza RabbitMQ en sus sistemas de gestión de Big Data, permitiendo procesar y compartir la información de forma eficiente. Por su parte, Netflix utiliza RabbitMQ como parte de su arquitectura de microservicios, facilitando una comunicación eficiente entre los diferentes servicios de la aplicación.
Estas empresas confían en RabbitMQ para comunicarse entre sus sistemas, permitiéndoles procesar grandes cantidades de datos de forma rápida y cuidadosa. El uso de esta tecnología muestra lo importante que es para las empresas que buscan una solución confiable y escalable para manejar la comunicación entre sus sistemas distribuidos.
¿Cómo funciona RabbitMQ?
RabbitMQ es un software de mensajería que funciona según el formato AMQP (Advanced Message Queuing Protocol). Se encarga de facilitar la comunicación entre los diferentes componentes de un sistema distribuido, permitiendo que las aplicaciones envíen y reciban mensajes. Es fiable ya que evita la pérdida de datos y es escalable al poder acumular varias solicitudes en la fila sin que se caiga el servidor.
El funcionamiento de RabbitMQ comienza con el Productor (Producer), que se encarga de enviar mensajes al servidor RabbitMQ. Estos mensajes se envían a Exchange, un componente responsable de recibir los mensajes y reenviarlos a la fila correcta. Los intercambios pueden funcionar con diferentes tipos de enrutamiento, como fanout, direct, topic y header, lo que permite dirigir los mensajes a las colas de forma personalizada.
Las filas (Queues) son el lugar donde se almacenan los mensajes hasta que son procesados por el Consumidor (Consumer). Los consumidores pueden conectarse a filas para recibir y procesar los mensajes que están esperando. Es posible tener varios consumidores trabajando en la misma fila, lo que garantiza que los mensajes se procesen de forma rápida y eficiente.
Para dirigir los mensajes a las filas correctas, RabbitMQ utiliza el concepto de Binds. El Bind es una conexión entre la Exchange y la fila, permitiendo que los mensajes sean encaminados a la fila correcta. Para que eso suceda, es necesario definir una Routing Key, una llave que permite identificar el mensaje y dirigirlo a la fila correcta.
RabbitMQ también tiene otras características, como soporte para transacciones y mensajes confirmables, que permiten a las aplicaciones garantizar que los mensajes se reciban y procesen correctamente.
En resumen, tiene varios conceptos, como Produtor, Consumer, Exchange, fila, Binds, Routing Key y otros, convirtiéndolo en una opción popular para las empresas que buscan soluciones de mensajería sólidas y confiables.
Cómo crear una aplicación Node con RabbitMQ
Para facilitar todo, ejecutaremos RabbitMQ en Docker. Asegúrate de tenerlo instalado e insertemos el siguiente comando:
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management
Después de eso, entra a la url http://localhost:15672/.
El usuario y contraseña por defecto son:
usuario: guest.
contraseña: guest.
Luego de ingresar, crea una fila con la respectiva Routing Key, que posteriormente conectará RabbitMQ con la aplicación, y genera la Exchange, que enviará las requisiciones a las filas correctas.
Con RabbitMQ configurado, podemos ir al código JavaScript.
Primero, crea un directorio y ejecuta este comando:
npm init -y
Enseguida:
npm install amqplib
Con las dependencias instaladas, generaremos los archivos que servirán para la comunicación con RabbitMQ.
mkdir consumer
Ahora crearemos 3 Consumers:
Consumer 1
Consumer 2
Consumer 3
Básicamente, el código establece una conexión con el servidor RabbitMQ local, crea un canal y, adicionalmente, declara una fila con el nombre. Por ejemplo, filaDoBob se conectará a un exchange con el nombre gomesEx, usando una llave de enrutado (routing key) denominada pago (pagamento, en portugués).
Una vez que el código consume el mensaje de la fila especificada e imprime tu contenido en la consola, se usa el parámetro noAck para confirmar si el mensaje fue recibido por el consumidor y ser excluido de la fila, pues no lo usaremos en este proyecto.
Este ejemplo muestra cómo funciona una operación básica de consumir un mensaje de una cola RabbitMQ y puede resultar útil como punto de partida para crear una aplicación de consumo de mensajes más compleja.
Ahora crea el Producer:
mkdir producer
Una vez realizadas estas partes y RabbitMQ actuando como intermediario, podremos utilizar la funcionalidad de Mensajería.
Modifica el package.json y prueba la aplicación.
Para probar, ejecuta los consumers con los comandos:
npm run consumer1
Otra terminal:
npm run consumer2
Otra terminal:
npm run consumer3
Con los consumers funcionando en la prueba, el producer altera la RoutingKey y se verá a cuáles consumers llega el mensaje.
Conclusión
Después de completar la solicitud, aprendimos que RabbitMQ es una herramienta de mensajería de código abierto muy útil para evitar diversos problemas.
Dado esto, aprender RabbitMQ es importante para los desarrolladores y arquitectos de software que desean crear sistemas distribuidos que puedan escalarse fácilmente y tener alta disponibilidad. Con la ayuda de RabbitMQ, los desarrolladores pueden separar los componentes del sistema en distintos servicios que se comunican de forma asincrónica, lo que hace que el sistema sea más flexible, tolerante a fallas y escalable.
Además, RabbitMQ se puede utilizar para integrar software de diferentes lenguajes y crear aplicaciones y servicios, siempre que estos lenguajes de programación admitan los protocolos de comunicación que ofrece RabbitMQ.
En definitiva, aprender RabbitMQ es importante para desarrolladores que quieran tener una herramienta adicional para resolver problemas con solicitudes excesivas o mal pensadas, con tecnología que se pueda adaptar fácilmente a las necesidades del mercado que está en constante evolución y cambio.
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.