Junior — Middle
Կարող եք բացատրել Exchange կոնցեպտը RabbitMQ-ում և այն ինչպես է գործում հաղորդագրությունների փոխանցման ժամանակ?
sobes.tech AI
Պատասխան AI-ից
RabbitMQ-ում Exchange-ը բաղադրիչ է, որը ստանում է հաղորդագրությունները արտադրողներից (producers) և ուղարկում դրանք որոշակի կանոնների, որոնք կոչվում են ռոուտինգ (routing), համապատասխան հերթերին (queues):
Հիմնական տեսակները՝
- Direct — հաղորդագրությունը ուղարկվում է հերթին, եթե ռոուտինգի բանալին համընկնում է հերթի բանալու հետ:
- Fanout — ուղարկում է հաղորդագրությունը բոլոր կապակցված հերթերին:
- Topic — ռոուտինգը կատարվում է բանալիների ձևանմուշների հիման վրա:
- Headers — ռոուտինգը կատարվում է հաղորդագրության գլխարկների հիման վրա:
Օրինակ՝
- արտադրողը ուղարկում է հաղորդագրություն ռոուտինգի բանալու հետ:
- 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);