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

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

RabbitMQ: Ποιος θα δημιουργήσει το Queue και το Exchange

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 3/5/2023 10:31:59 μ.μ. | | | |
Μετάφραση

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



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

Μια σημαντική υπόθεση για να λειτουργήσει με επιτυχία η παραπάνω δομή για τους παραγωγούς και τους καταναλωτές είναι ότι όλα τα στοιχεία του RabbitMQ (δηλαδή ουρές, διακόπτες και δεσμεύσεις) πρέπει να δημιουργηθούν εκ των προτέρων. Ένας καταναλωτής δεν μπορεί να στείλει ένα μήνυμα σε έναν διακόπτη Εάν ο διακόπτης δεν υπάρχει, ένας καταναλωτής δεν μπορεί να επεξεργαστεί μηνύματα από μια ουρά που δεν υπάρχει.

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

1. Διακρίνετε τις ευθύνες



Μετάφραση εικόνας (1. Ο παραγωγός δημιουργεί έναν διακόπτη 2. Ο καταναλωτής δημιουργεί μια ουρά και συνδέει την ουρά με τον διακόπτη)

Προκειμένου οι παραγωγοί και οι καταναλωτές να αποσυνδεθούν πλήρως, ιδανικά, οι παραγωγοί γνωρίζουν μόνο πληροφορίες για τον διακόπτη (όχι την ουρά) και οι καταναλωτές γνωρίζουν μόνο για την ουρά (όχι τον διακόπτη). Η σχέση δέσμευσης υποδεικνύει τη σχέση μεταξύ του διακόπτη και της ουράς

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

2. Οι παραγωγοί δημιουργούν τα πάντα

Όταν εκτελείται η παροχή, μπορεί να ρυθμιστεί ώστε να δημιουργεί όλα τα απαιτούμενα στοιχεία (διακόπτες, ουρές και συνδέσεις). Το πλεονέκτημα αυτής της προσέγγισης είναι ότι δεν χάνονται μηνύματα (επειδή η ουρά έχει ήδη δημιουργηθεί και είναι συνδεδεμένη με τον διακόπτη και κανένας καταναλωτής δεν χρειάζεται να την ξεκινήσει πρώτα).

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

3. Οι καταναλωτές δημιουργούν τα πάντα

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

4. Κανένα από τα δύο δεν δημιουργεί τίποτα

Μια εντελώς διαφορετική προσέγγιση δεν είναι ούτε ο παραγωγός ούτε ο καταναλωτής να δημιουργήσουν τα απαιτούμενα εξαρτήματα. Αντίθετα, δημιουργείται χρησιμοποιώντας τη διεπαφή χρήστη της προσθήκης διαχειριστή ή το CLI διαχειριστή εκ των προτέρων. Αυτή η μέθοδος βασίζεται στα ακόλουθα πλεονεκτήματα:

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


περίληψη

Στα κατανεμημένα συστήματα, τα ασύγχρονα μηνύματα είναι ένας χρήσιμος τρόπος αποσύνδεσης, αλλά για να διατηρηθούν αποσυνδεδεμένα, είναι απαραίτητο να διατηρηθεί μια αποτελεσματική στρατηγική για τη διατήρηση της υποκείμενης δομής ανταλλαγής μηνυμάτων (στο RabbitMQ, αυτές είναι ουρές, διακόπτες και δεσμεύσεις).

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

Πιθανώς ο καλύτερος τρόπος για να χειριστείτε τη διαμόρφωση του συστήματος ανταλλαγής μηνυμάτων όπου ανήκει: γράψτε σενάρια εκτός της εφαρμογής. Αυτό διασφαλίζει ότι οι υπηρεσίες παραμένουν αποσυνδεδεμένες και ότι το σύστημα ουράς μπορεί να αλλάξει δυναμικά ανάλογα με τις ανάγκες χωρίς να επηρεαστεί μεγάλος αριθμός υπαρχουσών υπηρεσιών.

Αρχικός:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Πρωτότυπο στην αγγλική γλώσσα:Η σύνδεση με υπερσύνδεσμο είναι ορατή.





Προηγούμενος:Εισαγωγή στη διεπαφή IParsable που προστέθηκε στο .NET 7
Επόμενος:VSTO (IV) Συμπληρώστε την εικόνα σε ένα έγγραφο του Word
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com