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:
- Producent odošle správu do Exchange s určeným kľúčom routy.
- Exchange overí pravidlá a spojí správu s jedným alebo viacerými frontami.
- 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);