Sobes.tech
Junior — Middle

Wat is het resultaat van het afleveren van een bericht met willekeurige tekst bij verzending naar RabbitMQ met de standaard configuratie van de exchange?

sobes.tech AI

Antwoord van AI

При отправке сообщения с произвольным текстом в RabbitMQ с использованием стандартной конфигурации обменника (default exchange) сообщение будет доставлено в очередь, имя которой совпадает с routing key, указанным при отправке.

Стандартный (default) exchange — это прямой (direct) exchange с пустым именем, который автоматически связывает каждую очередь с routing key, равным имени этой очереди.

Если при публикации сообщения указать routing key, совпадающий с именем существующей очереди, сообщение попадёт в эту очередь. Если такой очереди нет, сообщение будет отброшено (не доставлено).

Пример на C# с использованием RabbitMQ.Client:

var factory = new ConnectionFactory() { HostName = "localhost" };
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
    string queueName = "myQueue";
    channel.QueueDeclare(queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null);

    string message = "Привет, RabbitMQ!";
    var body = System.Text.Encoding.UTF8.GetBytes(message);

    // Отправляем сообщение в default exchange с routing key = имени очереди
    channel.BasicPublish(exchange: "", routingKey: queueName, basicProperties: null, body: body);
    Console.WriteLine(" [x] Sent {0}", message);
}

Если routing key не совпадает с именем очереди, сообщение не будет доставлено.