Junior — Middle
Vai jūs varat izskaidrot Exchange jēdzienu RabbitMQ un kā tas darbojas ziņojumu pārraidē?
sobes.tech AI
Atbilde no AI
RabbitMQ Exchange ir komponenta, kas saņem ziņojumus no ražotājiem (producers) un tos novirza uz rindām (queues) saskaņā ar noteiktiem noteikumiem, ko sauc par maršrutēšanu (routing).
Galvenie Exchange tipi:
- Direct — nosūta ziņojumu uz rindu, ja maršruta atslēga sakrīt ar rindas atslēgu.
- Fanout — nosūta ziņojumu visām ar šo Exchange saistītajām rindām.
- Topic — maršrutē ziņojumus pēc atslēgas modeļiem.
- Headers — maršrutē pēc ziņojuma galvām.
Piemērs darbībai:
- Ražotājs nosūta ziņojumu uz Exchange ar noteiktu maršruta atslēgu.
- Exchange pārbauda noteikumus un sasaista ziņojumu ar vienu vai vairākām rindām.
- Ziņojums nonāk rindā, no kuras to ņem patērētājs.
Tas ļauj elastīgi pārvaldīt ziņojumu maršrutēšanu un mērogot sistēmu.
C# piemērs ar 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);