Junior — Middle
RabbitMQда Exchange түшүнүгүн жана ал кандайча билдирүүлөрдү өткөрүүдө иштейт деп түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
RabbitMQ-да, Exchange — бу компонент, ки қабул мекунад хабарҳоро истеҳсолкунандагондан (producers) ва онҳоро мувофиқи қоидаҳои муайян, яъне routing (маршрутсозӣ), ба навбатҳо (queues) равона мекунад.
Асосӣ намудҳои Exchange:
- Direct — Ҳар вақте ки калиди routing бо калиди навбат мувофиқат мекунад, хабар ба навбат фиристода мешавад.
- Fanout — Ҳама навбатҳое, ки бо ин Exchange пайваст шудаанд, хабарро мегиранд.
- 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);