Sobes.tech
Junior — Middle

Môžete vysvetliť koncept Exchange v RabbitMQ a ako funguje pri prenose správ?

sobes.tech AI

Odpoveď od AI

V RabbitMQ je Exchange komponenta, ktorá prijíma správy od producentov (producers) a ich smeruje do front (queues) podľa určitých pravidiel nazývaných routy (routing).

Hlavné typy Exchange:

  • Direct — Posiela správu do frontu, ak sa kľúč routy zhoduje s kľúčom frontu.
  • Fanout — Posiela správu všetkým pripojeným frontom.
  • Topic — Rútuje správy podľa vzorov kľúčov.
  • Headers — Rútuje na základe hlavičiek správ.

Príklad fungovania:

  1. Producent odošle správu do Exchange s určeným kľúčom routy.
  2. Exchange overí pravidlá a spojí správu s jedným alebo viacerými frontami.
  3. Správa sa dostane do frontu, odkiaľ ju preberá spotrebiteľ.

Toto umožňuje flexibilné riadenie routovania správ a škálovanie systému.

Príklad v C# s 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);