¿Por Qué RabbitMQ?
RabbitMQ introduce un broker de mensajes intermediario: el Servicio A publica un mensaje en una cola, el Servicio B lo consume cuando está listo. Si B está caído, el mensaje espera seguro.
Instalación
sudo apt install -y erlang-base rabbitmq-server
sudo systemctl enable --now rabbitmq-server
sudo rabbitmq-plugins enable rabbitmq_management
Acceda a la UI en http://servidor:15672 (usuario: guest/guest, solo localhost).
Tipos de Exchange
| Tipo | Comportamiento |
|---|---|
| Direct | Coincidencia exacta de routing key |
| Fanout | Difunde a TODAS las colas vinculadas |
| Topic | Coincidencia por patrones (*.error, logs.#) |
| Headers | Enruta por atributos del header |
Clustering para Alta Disponibilidad
# En node2 y node3:
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app
Solución de Problemas
| Problema | Solución |
|---|---|
| Alarma de memoria | Agregue consumidores, más RAM o política max-length |
| Nodos no pueden unirse | Verifique cookie Erlang, resolución DNS y puertos 4369/25672 |
| Mensajes sin consumir | Verifique conexiones de consumidores y bindings |
| Cola creciendo sin límite | Establezca política TTL: rabbitmqctl set_policy TTL ".*" '{"message-ttl":86400000}' |