RabbitMQ es un broker de mensajería de código abierto que facilita la comunicación entre aplicaciones distribuidas. Su compatibilidad con múltiples protocolos y su facilidad de uso lo convierten en una opción ideal para manejar colas de mensajes en arquitecturas escalables.
1. Instalación de RabbitMQ en Linux
Requisitos previos
Antes de instalar RabbitMQ, es necesario contar con Erlang, ya que RabbitMQ depende de este lenguaje de programación para su funcionamiento.
Instalación en Debian y Ubuntu
sudo apt update
sudo apt install -y erlang
wget -O- https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash
sudo apt install -y rabbitmq-server
Instalación en RHEL, CentOS y Fedora
sudo yum install -y epel-release
sudo yum install -y erlang
sudo dnf install -y https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.0/rabbitmq-server-3.11.0-1.el8.noarch.rpm
sudo systemctl enable --now rabbitmq-server
Para verificar que el servicio esté activo:
sudo systemctl status rabbitmq-server
2. Configuración de RabbitMQ
Habilitar el panel de administración
RabbitMQ incluye un panel de administración accesible desde el navegador:
sudo rabbitmq-plugins enable rabbitmq_management
Por defecto, se accede a través de http://localhost:15672/
con usuario y contraseña guest/guest
.
Crear un usuario y vhost
Para mayor seguridad, es recomendable crear un usuario específico:
sudo rabbitmqctl add_user usuario contraseña
sudo rabbitmqctl set_permissions -p / usuario ".*" ".*" ".*"
3. Configuración de Colas y Consumidores
Declaración de una Cola en Python
Usaremos la biblioteca pika
para interactuar con RabbitMQ en Python:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='mi_cola')
channel.basic_publish(exchange='', routing_key='mi_cola', body='Hola, RabbitMQ!')
print("Mensaje enviado")
connection.close()
Creación de un Consumidor
def callback(ch, method, properties, body):
print(f"Mensaje recibido: {body}")
channel.basic_consume(queue='mi_cola', on_message_callback=callback, auto_ack=True)
print("Esperando mensajes...")
channel.start_consuming()
4. Casos de Uso de RabbitMQ
- Microservicios: Facilita la comunicación entre servicios de manera eficiente.
- Procesamiento de Tareas en Segundo Plano: Encola trabajos para ejecutarlos de manera asíncrona.
- Notificaciones en Tiempo Real: Envia eventos a clientes en sistemas en tiempo real.
Con esta guía, ahora tenés RabbitMQ instalado y configurado para manejar mensajería en Linux. ¡A probarlo!