Sobes.tech
Junior — Middle

Оё метавонед консептии Exchange дар RabbitMQ ва чӣ гуна кор мекунад дар интиқоли паёмҳо шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Дар RabbitMQ, Exchange — компонент, ки паёмҳоро аз истеҳсолкунандагон (producers) қабул мекунад ва онҳоро мувофиқи қоидаҳои муайян, ки маршрутҳо (routing) ном доранд, ба навбатҳо (queues) равона мекунад.

Типҳои асосии Exchange:

  • Direct — Паёмро ба навбат мефиристад, агар калиди routing бо калиди навбат мувофиқат кунад.
  • Fanout — Паёмро ба ҳамаи навбатҳои пайвастшуда бо ин Exchange мефиристад.
  • Topic — Паёмҳоро мувофиқи намунаҳои калидҳо равона мекунад.
  • Headers — Мувофиқи сарлавҳаҳои паёмҳо равона мекунад.

Масалан, кор:

  1. Истеҳсолкунанда паёмро бо калиди routing муайян ба 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);