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