Sobes.tech
Junior — Middle

Pode explicar o conceito de Exchange no RabbitMQ e como ele funciona na transmissão de mensagens?

sobes.tech IA

Resposta da IA

No RabbitMQ, o Exchange é um componente que recebe mensagens dos produtores e as encaminha para as filas (queues) de acordo com regras específicas chamadas rotas (routing).

Principais tipos de Exchange:

  • Directo — Envia a mensagem para a fila se a chave de roteamento corresponder à chave da fila.
  • Fanout — Envia a mensagem para todas as filas associadas a esse Exchange.
  • Topic — Roteia mensagens com base em padrões de chaves.
  • Headers — Roteia com base nos cabeçalhos das mensagens.

Exemplo de funcionamento:

  1. O produtor envia uma mensagem para um Exchange com uma chave de roteamento específica.
  2. O Exchange verifica suas regras e associa a mensagem a uma ou várias filas.
  3. A mensagem chega à fila, de onde o consumidor a retira.

Isso permite gerenciar a roteirização de mensagens de forma flexível e escalar o sistema.

Exemplo em 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);