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:
- Ishlab chiqaruvchi, ma'lum bir marshrutlash kaliti bilan Exchange'ga xabar yuboradi.
- Exchange o'z qoidalarini tekshiradi va xabarni bir yoki bir nechta navbat bilan bog'laydi.
- 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);