Sobes.tech
Back to questions
Junior — Middle
69

Как осуществляется направление сообщений внутри RabbitMQ?

Answer from AI

sobes.tech AI

В RabbitMQ направление сообщений осуществляется через обменники (exchanges) и очереди (queues). Процесс выглядит так:

  1. Производитель (Producer) отправляет сообщение в обменник.
  2. Обменник принимает сообщение и, согласно своей политике маршрутизации (routing), направляет его в одну или несколько очередей.
  3. Очереди хранят сообщения до тех пор, пока потребители (Consumers) не заберут их.

Типы обменников определяют логику маршрутизации:

  • Direct — маршрутизирует сообщения в очереди с точным совпадением ключа маршрутизации.
  • Fanout — рассылает сообщения во все связанные очереди.
  • Topic — маршрутизирует по шаблонам ключей.
  • Headers — маршрутизация по заголовкам сообщений.

Пример на 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);

string message = "Hello RabbitMQ!";
var body = Encoding.UTF8.GetBytes(message);

channel.BasicPublish(exchange: "logs", routingKey: "", basicProperties: null, body: body);
Console.WriteLine(" [x] Sent {0}", message);

Здесь сообщение отправляется в обменник типа fanout, который разошлёт его во все связанные очереди.