Εισαγωγή στο πρωτόκολλο AMQP
Το AMQP (Advanced Message Queuing Protocol) είναι ένα τυπικό πρωτόκολλο επιπέδου εφαρμογής που παρέχει ενοποιημένες υπηρεσίες ανταλλαγής μηνυμάτων και είναι ένα ανοιχτό πρότυπο για πρωτόκολλα επιπέδου εφαρμογής που έχουν σχεδιαστεί για ενδιάμεσο λογισμικό προσανατολισμένο στα μηνύματα. Το AMQP είναι ένα πρωτόκολλο δικτύου για τη μετάδοση ασύγχρονων μηνυμάτων μεταξύ διεργασιών.
Οι πελάτες και το ενδιάμεσο λογισμικό μηνυμάτων που βασίζονται σε αυτό το πρωτόκολλο μπορούν να παραδίδουν μηνύματα χωρίς να περιορίζονται από διαφορετικά προϊόντα πελάτη/ενδιάμεσου λογισμικού, διαφορετικές γλώσσες ανάπτυξης κ.λπ.
Τα κύρια χαρακτηριστικά του AMQP είναι ο προσανατολισμός στο μήνυμα, η ουρά, η δρομολόγηση (συμπεριλαμβανομένης της peer-to-peer και της δημοσίευσης/εγγραφής), η αξιοπιστία και η ασφάλεια. Το AMQP επιβάλλει τη συμπεριφορά των παρόχων μηνυμάτων και των πελατών, επιτρέποντας την πραγματική διαλειτουργικότητα μεταξύ διαφορετικών προμηθευτών.
Δρομολόγηση μηνυμάτων
Στην αρχιτεκτονική AMQP, κάθε επιτυχημένη δρομολόγηση μηνυμάτων αποτελείται από τρία μέρη:
- Exchange: Όπου οι παραγωγοί δημοσιεύουν μηνύματα
- Ουρές: Όπου οι καταναλωτές λαμβάνουν μηνύματα
- Συνδέσεις: Πώς δρομολογούνται τα μηνύματα από το διακόπτη σε μια συγκεκριμένη ουρά
Ανταλλαγές και Δεσμεύσεις
Πώς φτάνει λοιπόν το μήνυμα στην ουρά; Κάθε φορά που θέλετε να παραδώσετε ένα μήνυμα σε έναν καταναλωτή, πρέπει πρώτα να το στείλετε στον εναλλάκτη. Στη συνέχεια, με βάση ορισμένους κανόνες ή κλειδιά δρομολόγησης, το RabbitMQ θα αποφασίσει σε ποια ουρά θα πρέπει να παραδώσει μηνύματα.
Οι κανόνες - ή τα κλειδιά δρομολόγησης - σας επιτρέπουν να συνδέσετε μια ουρά στο ανταλλακτήριο. Το RabbitMQ θα προσπαθήσει να αντιστοιχίσει το κλειδί δρομολόγησης στο μήνυμα με το κλειδί που χρησιμοποιείται στη δέσμευση. Στη συνέχεια, το μήνυμα παραδίδεται στην ουρά με βάση έναν από τους τέσσερις τύπους ανταλλαγής: fanout, θέμα, άμεση, κεφαλίδα
Ανταλλαγή Fanout
Αυτός ο τύπος ανταλλαγής μεταδίδει όλα τα μηνύματα που λαμβάνει σε όλες τις ουρές που είναι συνδεδεμένες σε αυτόν. Τυχόν κλειδιά δρομολόγησης που παρέχονται με το δημοσιευμένο μήνυμα θα αγνοηθούν.
Ανταλλαγή θεμάτων
Σε αυτόν τον τύπο ανταλλαγής, τα μηνύματα αποστέλλονται σε μια ουρά με βάση το κλειδί δρομολόγησης. Αυτό σημαίνει ότι τα μηνύματα που αποστέλλονται στην ανταλλαγή θεμάτων πρέπει να έχουν ένα συγκεκριμένο κλειδί δρομολόγησης, το οποίο πρέπει να είναι μια λίστα λέξεων, διαχωρισμένων με σημεία (π.χ. 'acs.deviceoperations.'). Το όριο διατύπωσης είναι 255 byte.
Το κλειδί βιβλιοδεσίας πρέπει να έχει την ίδια μορφή με το κλειδί δρομολόγησης. Επομένως, τα μηνύματα που αποστέλλονται με ένα συγκεκριμένο κλειδί δρομολόγησης θα παραδίδονται σε κάθε ουρά που συνδέεται με ένα αντίστοιχο κλειδί σύνδεσης.
Τα κλειδιά σύνδεσης επιτρέπουν τους ακόλουθους κανόνες έκφρασης:
*(αστερίσκος) μπορεί να αντικαταστήσει μόνο μία λέξη # (κατακερματισμός) μπορεί να αντικαταστήσει μηδέν ή περισσότερες λέξεις Όταν μια ουρά είναι συνδεδεμένη με ένα κλειδί δέσμευσης "#" (κατακερματισμός), θα λαμβάνει όλα τα μηνύματα ανεξάρτητα από το κλειδί δρομολόγησης, όπως ακριβώς σε μια ανταλλαγή fan-out Fanout.
Άμεση ανταλλαγή
Όταν δηλώνεται μια ουρά, θαΑυτόματη σύνδεση σε διακόπτη που χρησιμοποιεί το όνομα της ουράς ως κλειδί δρομολόγησης。 Εάν το κλειδί δρομολόγησης ταιριάζει, το μήνυμα παραδίδεται στην κατάλληλη ουρά.
Ανταλλαγή κεφαλίδας
Οι διακόπτες κεφαλίδας είναι κάπως παρόμοιοι με τους διακόπτες θέματος, αλλά σε αντίθεση με τους διακόπτες θέματος, η δρομολόγηση βασίζεται σε πλήκτρα δρομολόγησης και οι τιμές δρομολόγησης των διακοπτών κεφαλίδας βασίζονται στα δεδομένα κεφαλίδας του μηνύματος. Το κλειδί δρομολόγησης του διακόπτη θέματος είναι μόνο μια συμβολοσειρά, ενώ ο διακόπτης κεφαλίδας μπορεί να είναι ένας ακέραιος και ένας κατακερματισμός.
(Τέλος)
|