Sobes.tech
Back to questions
Junior — Middle
59

Какой будет результат доставки сообщения с произвольным текстом при отправке его в RabbitMQ с использованием стандартной конфигурации обменника?

Companies where asked
Медиалогия

Answer from AI

sobes.tech 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 не совпадает с именем очереди, сообщение не будет доставлено.