Sobes.tech
Junior — Middle

Cum se realizează livrarea mesajelor către mai mulți abonați în sistemul RabbitMQ?

sobes.tech AI

Răspuns de la AI

În RabbitMQ, livrarea mesajelor către mai mulți abonați se realizează prin intermediatori de tip "fanout". Un astfel de schimbător trimite fiecare mesaj primit către toate coziile conectate la el. Astfel, fiecare abonat care ascultă propria coadă va primi o copie a mesajului.

Exemplu în C# folosind biblioteca 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);

Aici, fiecare abonat creează propria coadă și o leagă de schimbătorul "fanout", primind toate mesajele.