Sobes.tech
Junior — Middle

RabbitMQ'da Exchange tushunchasini va u qanday ishlashini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

RabbitMQ'da Exchange — bu komponent, ishlab chiqaruvchilardan (producers) xabarlarni qabul qiladi va ularni ma'lum qoidalar, ya'ni marshrutlash (routing) qoidalariga muvofiq, navbatlarga (queues) yo'naltiradi.

Asosiy Exchange turlari:

  • Direct — Agar marshrutlash kaliti navbat kalitiga mos kelsa, xabar navbatga yuboriladi.
  • Fanout — Xabarni bu Exchange bilan bog'langan barcha navbatlarga yuboradi.
  • Topic — Xabarlarni kalit shablonlariga muvofiq yo'naltiradi.
  • Headers — Xabar sarlavhalariga asoslangan yo'naltirish.

Ishlash misoli:

  1. Ishlab chiqaruvchi, ma'lum bir marshrutlash kaliti bilan Exchange'ga xabar yuboradi.
  2. Exchange o'z qoidalarini tekshiradi va xabarni bir yoki bir nechta navbat bilan bog'laydi.
  3. Xabar navbatga tushadi, u yerda iste'molchi uni oladi.

Bu, xabarlarni yo'naltirishni moslashuvchan boshqarish va tizimni kengaytirish imkonini beradi.

C# da RabbitMQ.Client bilan misol:

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);