Junior — Middle
Meg tudná magyarázni az Exchange fogalmát a RabbitMQ-ban, és hogyan működik az üzenetátvitel során?
sobes.tech MI
Válasz az MI-től
A RabbitMQ-ban az Exchange egy olyan komponens, amely fogadja a producerektől (gyártóktól) érkező üzeneteket, és azok útvonalát (routing) szabályok szerint irányítja a sorokhoz (queues).
Fő típusai az Exchange-nek:
- Direct — Az üzenetet a sorba küldi, ha a routing kulcs megegyezik a sor kulcsával.
- Fanout — Az üzenetet minden ehhez az Exchange-hez kapcsolt sorhoz továbbítja.
- Topic — A kulcs mintázatok szerint irányítja az üzeneteket.
- Headers — Az üzenetek fejléc alapján irányít.
Működési példa:
- A producer egy adott routing kulccsal küld egy üzenetet az Exchange-nek.
- Az Exchange ellenőrzi a szabályokat, és összekapcsolja az üzenetet egy vagy több sorral.
- Az üzenet a sorba kerül, ahonnan a fogyasztó (consumer) felveszi.
Ez lehetővé teszi az üzenetek rugalmas irányítását és a rendszer skálázását.
C# példával RabbitMQ.Client használatával:
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);