Junior — Middle
Μπορείτε να εξηγήσετε την έννοια του Exchange στο RabbitMQ και πώς λειτουργεί στη μετάδοση μηνυμάτων;
sobes.tech AI
Απάντηση από AI
Στο RabbitMQ, το Exchange είναι ένα συστατικό που λαμβάνει μηνύματα από παραγωγούς (producers) και τα προωθεί σε ουρές (queues) σύμφωνα με συγκεκριμένους κανόνες που ονομάζονται δρομολογήσεις (routing).
Κύριοι τύποι Exchange:
- Direct — Στέλνει το μήνυμα σε ουρά αν το κλειδί δρομολόγησης ταιριάζει με το κλειδί της ουράς.
- Fanout — Στέλνει το μήνυμα σε όλες τις συνδεδεμένες ουρές.
- Topic — Δρομολογεί μηνύματα βάσει μοτίβων κλειδιών.
- Headers — Δρομολογεί βάσει των επικεφαλίδων των μηνυμάτων.
Παράδειγμα λειτουργίας:
- Ο παραγωγός στέλνει μήνυμα σε ένα Exchange με ένα συγκεκριμένο κλειδί δρομολόγησης.
- Το 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);