Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 3645|Απάντηση: 0

Λεπτομερής επεξήγηση της αρχιτεκτονικής μηνυμάτων RabbitMQ AMQP

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 14/8/2022 11:32:43 μ.μ. | | | |
Εισαγωγή στο πρωτόκολλο AMQP

Το AMQP (Advanced Message Queuing Protocol) είναι ένα τυπικό πρωτόκολλο επιπέδου εφαρμογής που παρέχει ενοποιημένες υπηρεσίες ανταλλαγής μηνυμάτων και είναι ένα ανοιχτό πρότυπο για πρωτόκολλα επιπέδου εφαρμογής που έχουν σχεδιαστεί για ενδιάμεσο λογισμικό προσανατολισμένο στα μηνύματα. Το AMQP είναι ένα πρωτόκολλο δικτύου για τη μετάδοση ασύγχρονων μηνυμάτων μεταξύ διεργασιών.

Οι πελάτες και το ενδιάμεσο λογισμικό μηνυμάτων που βασίζονται σε αυτό το πρωτόκολλο μπορούν να παραδίδουν μηνύματα χωρίς να περιορίζονται από διαφορετικά προϊόντα πελάτη/ενδιάμεσου λογισμικού, διαφορετικές γλώσσες ανάπτυξης κ.λπ.

Τα κύρια χαρακτηριστικά του AMQP είναι ο προσανατολισμός στο μήνυμα, η ουρά, η δρομολόγηση (συμπεριλαμβανομένης της peer-to-peer και της δημοσίευσης/εγγραφής), η αξιοπιστία και η ασφάλεια. Το AMQP επιβάλλει τη συμπεριφορά των παρόχων μηνυμάτων και των πελατών, επιτρέποντας την πραγματική διαλειτουργικότητα μεταξύ διαφορετικών προμηθευτών.

Λεπτομερής επεξήγηση του πρωτοκόλλου AMQP
https://www.itsvse.com/thread-10347-1-1.html

Δρομολόγηση μηνυμάτων

Στην αρχιτεκτονική AMQP, κάθε επιτυχημένη δρομολόγηση μηνυμάτων αποτελείται από τρία μέρη:

  • Exchange: Όπου οι παραγωγοί δημοσιεύουν μηνύματα
  • Ουρές: Όπου οι καταναλωτές λαμβάνουν μηνύματα
  • Συνδέσεις: Πώς δρομολογούνται τα μηνύματα από το διακόπτη σε μια συγκεκριμένη ουρά


Ανταλλαγές και Δεσμεύσεις

Πώς φτάνει λοιπόν το μήνυμα στην ουρά; Κάθε φορά που θέλετε να παραδώσετε ένα μήνυμα σε έναν καταναλωτή, πρέπει πρώτα να το στείλετε στον εναλλάκτη. Στη συνέχεια, με βάση ορισμένους κανόνες ή κλειδιά δρομολόγησης, το RabbitMQ θα αποφασίσει σε ποια ουρά θα πρέπει να παραδώσει μηνύματα.

Οι κανόνες - ή τα κλειδιά δρομολόγησης - σας επιτρέπουν να συνδέσετε μια ουρά στο ανταλλακτήριο. Το RabbitMQ θα προσπαθήσει να αντιστοιχίσει το κλειδί δρομολόγησης στο μήνυμα με το κλειδί που χρησιμοποιείται στη δέσμευση. Στη συνέχεια, το μήνυμα παραδίδεται στην ουρά με βάση έναν από τους τέσσερις τύπους ανταλλαγής: fanout, θέμα, άμεση, κεφαλίδα



Ανταλλαγή Fanout

Αυτός ο τύπος ανταλλαγής μεταδίδει όλα τα μηνύματα που λαμβάνει σε όλες τις ουρές που είναι συνδεδεμένες σε αυτόν. Τυχόν κλειδιά δρομολόγησης που παρέχονται με το δημοσιευμένο μήνυμα θα αγνοηθούν.

Ανταλλαγή θεμάτων

Σε αυτόν τον τύπο ανταλλαγής, τα μηνύματα αποστέλλονται σε μια ουρά με βάση το κλειδί δρομολόγησης. Αυτό σημαίνει ότι τα μηνύματα που αποστέλλονται στην ανταλλαγή θεμάτων πρέπει να έχουν ένα συγκεκριμένο κλειδί δρομολόγησης, το οποίο πρέπει να είναι μια λίστα λέξεων, διαχωρισμένων με σημεία (π.χ. 'acs.deviceoperations.'). Το όριο διατύπωσης είναι 255 byte.

Το κλειδί βιβλιοδεσίας πρέπει να έχει την ίδια μορφή με το κλειδί δρομολόγησης. Επομένως, τα μηνύματα που αποστέλλονται με ένα συγκεκριμένο κλειδί δρομολόγησης θα παραδίδονται σε κάθε ουρά που συνδέεται με ένα αντίστοιχο κλειδί σύνδεσης.

Τα κλειδιά σύνδεσης επιτρέπουν τους ακόλουθους κανόνες έκφρασης:

*(αστερίσκος) μπορεί να αντικαταστήσει μόνο μία λέξη
# (κατακερματισμός) μπορεί να αντικαταστήσει μηδέν ή περισσότερες λέξεις
Όταν μια ουρά είναι συνδεδεμένη με ένα κλειδί δέσμευσης "#" (κατακερματισμός), θα λαμβάνει όλα τα μηνύματα ανεξάρτητα από το κλειδί δρομολόγησης, όπως ακριβώς σε μια ανταλλαγή fan-out Fanout.

Άμεση ανταλλαγή

Όταν δηλώνεται μια ουρά, θαΑυτόματη σύνδεση σε διακόπτη που χρησιμοποιεί το όνομα της ουράς ως κλειδί δρομολόγησης。 Εάν το κλειδί δρομολόγησης ταιριάζει, το μήνυμα παραδίδεται στην κατάλληλη ουρά.

Ανταλλαγή κεφαλίδας

Οι διακόπτες κεφαλίδας είναι κάπως παρόμοιοι με τους διακόπτες θέματος, αλλά σε αντίθεση με τους διακόπτες θέματος, η δρομολόγηση βασίζεται σε πλήκτρα δρομολόγησης και οι τιμές δρομολόγησης των διακοπτών κεφαλίδας βασίζονται στα δεδομένα κεφαλίδας του μηνύματος.
Το κλειδί δρομολόγησης του διακόπτη θέματος είναι μόνο μια συμβολοσειρά, ενώ ο διακόπτης κεφαλίδας μπορεί να είναι ένας ακέραιος και ένας κατακερματισμός.

(Τέλος)





Προηγούμενος:Λεπτομερής επεξήγηση του πρωτοκόλλου AMQP
Επόμενος:[Στροφή]. Βελτιστοποιήσεις απόδοσης NET - διασχίστε γρήγορα τις συλλογές λιστών
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com