Junior — Middle
Kā notiek ziņojumu piegāde vairākiem abonentiem RabbitMQ sistēmā?
sobes.tech AI
Atbilde no AI
RabbitMQ, ziņojumu piegāde vairākiem abonentiem tiek realizēta caur "fanout" tipa maiņām. Šāda maiņa nosūta katru saņemto ziņojumu visām ar to saistītajām rindām. Tādējādi, katrs abonents, klausoties savu rindu, saņems ziņojuma kopiju.
Piemērs C# ar RabbitMQ.Client bibliotēku:
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);
Šeit katrs abonents izveido savu rindu un pieslēdz to "fanout" maiņai, saņemot visas ziņas.