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:
- O produtor envia uma mensagem para um Exchange com uma chave de roteamento específica.
- O Exchange verifica suas regras e associa a mensagem a uma ou várias filas.
- 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);