Sobes.tech
Junior — Middle

RabbitMQ системасында бир нече жазылуучуларга билдирүүлөрдү жеткирүү кандай жүргүзүлөт?

sobes.tech AI

AIден жооп

RabbitMQ-де билдирүүлөрдү бир нече жазылуучуларга жеткирүү "fanout" түрүндөгү алмаштыргычтар аркылуу ишке ашырылат. Мындай алмаштыргыч алынган ар бир билдирүүнү ага байланышкан бардык кезектерге жиберет. Ошентип, өз кезегин угуп жаткан ар бир жазылуучу билдирүүнүн көчүрмөсүн алат.

C# колдонуп 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);

Бул жерде, ар бир жазылуучу өзүнүн кезегин түзүп, аны "fanout" алмаштыргычка байланыштырып, бардык билдирүүлөрдү алат.