Sobes.tech
Junior — Middle

Можете ли да обясните концепцията за Exchange в RabbitMQ и как тя функционира при предаването на съобщения?

sobes.tech AI

Отговор от AI

В RabbitMQ, Exchange е компонент, който получава съобщения от производители (producers) и ги насочва към опашки (queues) според определени правила, наречени маршрути (routing).

Основни типове Exchange:

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

Пример за работа:

  1. Производител изпраща съобщение към Exchange с определен ключ за маршрутизиране.
  2. Exchange проверява правилата си и свързва съобщението с една или повече опашки.
  3. Съобщението достига до опашката, от където го взема потребителят.

Това позволява гъвкаво управление на маршрутизацията на съобщения и мащабиране на системата.

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