Junior — Middle
¿Puede explicar el concepto de Exchange en RabbitMQ y cómo funciona en la transmisión de mensajes?
sobes.tech AI
Respuesta de la IA
En RabbitMQ, el Exchange es un componente que recibe mensajes de los productores y los enruta a las colas según reglas específicas llamadas rutas (routing).
Tipos principales de Exchange:
- Directo — Envía el mensaje a la cola si la clave de enrutamiento coincide con la clave de la cola.
- Fanout — Envía el mensaje a todas las colas vinculadas a ese Exchange.
- Topic — Enruta los mensajes según patrones de claves.
- Headers — Enruta según los encabezados de los mensajes.
Ejemplo de funcionamiento:
- El productor envía un mensaje a un Exchange con una clave de enrutamiento específica.
- El Exchange verifica sus reglas y vincula el mensaje con una o varias colas.
- El mensaje llega a la cola, desde donde el consumidor lo recoge.
Esto permite gestionar la enrutación de mensajes de manera flexible y escalar el sistema.
Ejemplo en C# usando RabbitMQ.Client:
var factory = new ConnectionFactory() { HostName = "localhost" };
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
channel.ExchangeDeclare(exchange: "logs", type: ExchangeType.Fanout);
string message = "Hello RabbitMQ!";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "logs", routingKey: "", basicProperties: null, body: body);
Console.WriteLine(" [x] Sent {0}", message);