Sobes.tech
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);