Junior — Middle
RabbitMQ sistemində mesajların bir neçə abunəçiyə çatdırılması necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
RabbitMQ-də mesajların bir neçə abunəçiyə çatdırılması "fanout" tipli dəyişdiricilər vasitəsilə həyata keçirilir. Belə bir dəyişdirici alınan hər mesajı ona bağlı olan bütün növbələrə göndərir. Beləliklə, öz növbəsini dinləyən hər abunəçi mesajın nüsxəsini alacaq.
C# dilində RabbitMQ.Client kitabxanası ilə nümunə:
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);
Burada, hər abunəçi öz növbəsini yaradır və onu "fanout" dəyişdiricisinə bağlayır, bütün mesajları alır.