Back to questions
Junior — Middle
69
Как осуществляется направление сообщений внутри RabbitMQ?
Answer from AI
sobes.tech AI
В RabbitMQ направление сообщений осуществляется через обменники (exchanges) и очереди (queues). Процесс выглядит так:
- Производитель (Producer) отправляет сообщение в обменник.
- Обменник принимает сообщение и, согласно своей политике маршрутизации (routing), направляет его в одну или несколько очередей.
- Очереди хранят сообщения до тех пор, пока потребители (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, который разошлёт его во все связанные очереди.