Sobes.tech
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:

  1. El productor envía un mensaje a un Exchange con una clave de enrutamiento específica.
  2. El Exchange verifica sus reglas y vincula el mensaje con una o varias colas.
  3. 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);