Junior — Middle
Можете ли да обясните концепцията за Exchange в RabbitMQ и как тя функционира при предаването на съобщения?
sobes.tech AI
Отговор от AI
В RabbitMQ, Exchange е компонент, който получава съобщения от производители (producers) и ги насочва към опашки (queues) според определени правила, наречени маршрути (routing).
Основни типове Exchange:
- Direct — изпраща съобщението към опашка, ако ключът за маршрутизиране съвпада с ключа на опашката.
- Fanout — изпраща съобщението към всички свързани с този Exchange опашки.
- Topic — маршрутизира съобщения според шаблони на ключовете.
- Headers — маршрутизира според заглавията на съобщенията.
Пример за работа:
- Производител изпраща съобщение към Exchange с определен ключ за маршрутизиране.
- Exchange проверява правилата си и свързва съобщението с една или повече опашки.
- Съобщението достига до опашката, от където го взема потребителят.
Това позволява гъвкаво управление на маршрутизацията на съобщения и мащабиране на системата.
Пример на 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);