Junior — Middle
RabbitMQ sisteminde mesajlar birden fazla aboneye nasıl iletilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
RabbitMQ'da mesajların birden fazla aboneye iletimi "fanout" tipi değişimlerle gerçekleştirilir. Bu değişim, alınan her mesajı bağlı olduğu tüm kuyruklara gönderir. Böylece, kendi kuyruğunu dinleyen her abone, mesajın bir kopyasını alır.
C# kullanarak RabbitMQ.Client kütüphanesi ile örnek:
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, her abone kendi kuyruğunu oluşturur ve fanout değişimine bağlar, böylece tüm mesajları alır.