Sobes.tech
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:

  1. A producer egy adott routing kulccsal küld egy üzenetet az Exchange-nek.
  2. Az Exchange ellenőrzi a szabályokat, és összekapcsolja az üzenetet egy vagy több sorral.
  3. 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);