Sobes.tech
Junior — Middle

Ako sa vykonáva doručenie správ viacerým odberateľom v systéme RabbitMQ?

sobes.tech AI

Odpoveď od AI

V RabbitMQ je doručovanie správ viacerým odberateľom realizované cez výmeníky typu "fanout". Takýto výmeník odošle každú prijatú správu všetkým pripojeným frontám. Týmto spôsobom každý odberateľ, ktorý počúva svoju vlastnú frontu, dostane kópiu správy.

Príklad v C# s použitím knižnice 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);

var queueName = channel.QueueDeclare().QueueName;
channel.QueueBind(queue: queueName, exchange: "logs", routingKey: "");

var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) => {
    var body = ea.Body.ToArray();
    var message = Encoding.UTF8.GetString(body);
    Console.WriteLine("Received: " + message);
};
channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumer);

Tu každý odberateľ vytvorí svoju vlastnú frontu a pripojí ju k "fanout" výmeníku, čím dostáva všetky správy.