RabbitMQ es un intermediario de software que implementa el protocolo AMQP. Esta plataforma permite la comunicación asíncrona entre aplicaciones distribuidas mediante una arquitectura orientada a mensajería.
- Mensaje: Unidad básica de información. Contiene metadatos opcionales (etiquetas) como clave de ruteo (routing-key), prioridad y modo de entrega, junto con el cuerpo que almacena los datos estructurados (por ejemplo, JSON).
- Productor: Aplicación emisora que envía mensajes al Broker. La lógica determina qué ruta tomará el mensaje antes de entregarlo a la red.
- Intercambiador (Exchange): Punto de entrada donde llegan los mensajes desde los productores. Se encarga de distribuirlos hacia las colas correspondientes según reglas de ruteo específicas. Si no hay destino válido, se gestiona según la configuración (retornar o descartar).
- Cola (Queue): Almacén temporal de los mensajes. Los consumidores acceden aquí para procesar la información.
- Enlace (Binding): Vinculación definida entre un Intercambiador y una Cola. Regula cómo se enrutan los mensajes dependiendo del tipo de intercambiamiento configurado.
- Consumidor: Entidad receptora que escucha las colas. Por defecto, si existen múltiples consumidores para una misma cola, la carga se equilibra entre ellos (Round Robin).
La topología básica funciona bajo el modelo: Productor → Exchange → Binding → Cola ← Consumidor. El puerto estándar para la conexión de clientes es 5672, mientras que la interfaz administrativa web opera por defecto en el 15672.
Procedimiento de Instalación en Ubuntu
El entorno requiere previamente el tiempo de ejecución Erlang, ya que el núcleo de RabbitMQ está construido sobre este lenguaje. A continuación se detalla el proceso para versiones recientes de Ubuntu.
Configuración del Entorno Erlang
Se deben registrar las claves de firma oficial antes de añadir los repositorios. Es recomendable instalar los paquetes de transmisión seguros.
#!/bin/bash
# Importar claves de seguridad oficiales
curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-key adv --keyserver "hkps://keys.openpgp.org" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
sudo apt-get install -y apt-transport-https curl gnupg
# Configurar repositorio de Bintray para versión específica
cat <<eof apt-get="" base="" de="" deb="" dependencias="" eof="" erlang="" erlang-asn1="" erlang-base="" erlang-crypto="" erlang-inets="" erlang-mnesia="" erlang-ssl="" erlang-tools="" erlang-xmerl="" https:="" instalar="" install="" main="" sudo="" tee="" update=""></eof>
Despliegue del Servidor
Una vez aseguradas las dependencias, se procede a instalar el servicio principal. En entornos corporativos, verificar siempre la disponibilidad de las versiones en PackageCloud o Bintray.
# Instalación final del servidor
sudo apt-get install -y rabbitmq-server --fix-missing
# Verificar estado del servicio
sudo service rabbitmq-server status
Para gestionar el ciclo de vida, utilice los comandos siguientes: start para iniciar, stop para detener. Es crucial monitorear los puertos expuestos. El puerto 4369 es usado para descubrimiento de nodos, y el 25672 para comunicaciones internas del clúster. No exponga estos puertos públicamente sin autenticación adecuada.
Gestión y Monitoreo
A pesar de contar con paneles gráficos, el terminal ofrece control granular para administración remota y automatización.
Herramientas Línea de Comandos
El conjunto rabbitmqctl es la herramienta principal para operaciones de sistema:
list_queues: Muestra todas las colas activas.list_exchanges: Lista todos los intercambios registrados.list_bindings: Visualiza las relaciones entre exchanges y colas.list_vhosts: Enumera los entornos virtuales de alojamiento.list_consumers: Identifica usuarios conectados a las colas.
Para diagnósticos avanzados de salud del sistema, se utiliza rabbitmq-diagnostics:
cluster_status: Reporta la integridad del grupo.list_permissions: Auditoría de accesos por usuario.
Gestionar funcionalidades adicionales mediante rabbitmq-plugins:
sudo rabbitmq-plugins enable rabbitmq_management
sudo rabbitmq-plugins enable rabbitmq_federation
Para cargar nuevas características o desactivar módulos obsoletos. ### Panel de Control Web
La visualización gráfica simplifica tareas operativas rutinarias como revisar métricas o configurar permisos. Este módulo debe habilitarse explícitamente tras la instalación:
rabbitmq-plugins enable rabbitmq_management
Acceda mediante http://[host]:15672. Las credenciales por defecto son guest / guest con permisos restringidos solo a localhost. Para crear administradores con acceso global, ingrese a la sección de perfil tras el inicio de sesión.