Με το MSMQ (Microsoft Message Queue), οι προγραμματιστές εφαρμογών μπορούν εύκολα να επικοινωνούν με εφαρμογές γρήγορα και αξιόπιστα στέλνοντας και λαμβάνοντας μηνύματα. Η επεξεργασία μηνυμάτων σάς παρέχει μια αξιόπιστη ασφαλή μέθοδο για εγγυημένη ανταλλαγή μηνυμάτων και εκτέλεση πολλών επιχειρηματικών διαδικασιών.
Το MSMQ, όπως το XML Web Services και το .Net Remoting, είναι μια κατανεμημένη τεχνολογία ανάπτυξης. Ωστόσο, όταν χρησιμοποιείτε XML Web Services ή στοιχεία .Net Remoting, ο πελάτης πρέπει να ανταλλάσσει πληροφορίες με το διακομιστή σε πραγματικό χρόνο και ο διακομιστής πρέπει να παραμένει συνδεδεμένος. Το MSMQ μπορεί να λειτουργήσει όταν ο διακομιστής είναι εκτός σύνδεσης, αποθηκεύοντας προσωρινά το μήνυμα στην ουρά μηνυμάτων στην πλευρά του υπολογιστή-πελάτη και, στη συνέχεια, στέλνοντάς το στο διακομιστή για επεξεργασία όταν είναι συνδεδεμένος.
Προφανώς, το MSMQ δεν είναι κατάλληλο για την κατάσταση όπου ο πελάτης πρέπει να ανταποκριθεί έγκαιρα από τον διακομιστή και το MSMQ αλληλεπιδρά με τον διακομιστή με ασύγχρονο τρόπο, επομένως δεν χρειάζεται να ανησυχείτε για την αναμονή για την επεξεργασία του διακομιστή για μεγάλο χρονικό διάστημα.
Παρόλο που τόσο οι υπηρεσίες Web XML όσο και το .Net Remoting παρέχουν την ιδιότητα [OneWay] για τη διαχείριση ασύγχρονων κλήσεων, χρησιμοποιείται για την επίλυση του προβλήματος των κλήσεων μεγάλης διάρκειας από την πλευρά του διακομιστή που μπλοκάρουν την πλευρά του πελάτη για μεγάλο χρονικό διάστημα. Ωστόσο, δεν μπορεί να λύσει το πρόβλημα του μεγάλου φόρτου πελάτη και ο διακομιστής δέχεται αιτήματα πιο γρήγορα από ό,τι μπορεί να επεξεργαστεί.
Γενικά, το χαρακτηριστικό [OneWay] δεν χρησιμοποιείται σε εξειδικευμένες υπηρεσίες ανταλλαγής μηνυμάτων.
1. Βασικοί όροι και έννοιες
Ένα «μήνυμα» είναι μια μονάδα δεδομένων που μεταδίδεται μεταξύ δύο υπολογιστών. Τα μηνύματα μπορεί να είναι πολύ απλά, όπως να περιέχουν μόνο συμβολοσειρές κειμένου. Μπορεί επίσης να είναι πιο περίπλοκο και μπορεί να περιέχει ενσωματωμένα αντικείμενα.
Τα μηνύματα αποστέλλονται στην ουρά. Η "ουρά μηνυμάτων" είναι ένα κοντέινερ που περιέχει μηνύματα κατά τη μετάδοσή τους. Ο διαχειριστής ουράς μηνυμάτων λειτουργεί ως ενδιάμεσος κατά τη μετάδοση μηνυμάτων από την πηγή του στον προορισμό του. Ο κύριος σκοπός μιας ουράς είναι να παρέχει δρομολόγηση και να εγγυάται την παράδοση των μηνυμάτων. Εάν ο παραλήπτης δεν είναι διαθέσιμος κατά την αποστολή του μηνύματος, η ουρά μηνυμάτων διατηρεί το μήνυμα μέχρι να παραδοθεί με επιτυχία.
Η "Ουρά μηνυμάτων" είναι η τεχνολογία επεξεργασίας μηνυμάτων της Microsoft που παρέχει δυνατότητες επεξεργασίας μηνυμάτων και ουράς μηνυμάτων για οποιαδήποτε εφαρμογή σε οποιονδήποτε συνδυασμό υπολογιστών με εγκατεστημένα Microsoft Windows, ανεξάρτητα από το αν βρίσκονται στο ίδιο δίκτυο ή συνδεδεμένοι ταυτόχρονα.
Ένα "δίκτυο ουράς μηνυμάτων" είναι οποιαδήποτε ομάδα υπολογιστών που μπορεί να στέλνει μηνύματα μεταξύ τους. Διαφορετικοί υπολογιστές σε ένα δίκτυο παίζουν διαφορετικούς ρόλους στη διασφάλιση της ομαλής επεξεργασίας των μηνυμάτων. Ορισμένα από αυτά παρέχουν πληροφορίες δρομολόγησης για να καθορίσουν τον τρόπο αποστολής μηνυμάτων, άλλα περιέχουν σημαντικές πληροφορίες για ολόκληρο το δίκτυο και μερικά απλώς στέλνουν και λαμβάνουν μηνύματα.
Κατά την εγκατάσταση της ουράς μηνυμάτων, οι διαχειριστές καθορίζουν ποιοι διακομιστές μπορούν να επικοινωνούν μεταξύ τους και ορίζουν ειδικούς ρόλους για συγκεκριμένους διακομιστές. Οι υπολογιστές που αποτελούν αυτό το δίκτυο "ουρών μηνυμάτων" ονομάζονται "τοποθεσίες" και συνδέονται μεταξύ τους με "συνδέσεις τοποθεσιών". Κάθε σύνδεσμος ιστοτόπου έχει μια συσχετισμένη "επιβάρυνση" που καθορίζεται από τον διαχειριστή και υποδεικνύει πόσο συχνά παραδίδονται μηνύματα μέσω αυτού του συνδέσμου ιστοτόπου.
Ο διαχειριστής της ουράς μηνυμάτων ρυθμίζει επίσης έναν ή περισσότερους υπολογιστές στο δίκτυο που λειτουργούν ως διακομιστές δρομολόγησης. Ο διακομιστής δρομολόγησης εξετάζει την επιβάρυνση κάθε συνδέσμου ιστοτόπου για να προσδιορίσει τον ταχύτερο και αποτελεσματικότερο τρόπο παράδοσης ενός μηνύματος μέσω πολλών ιστότοπων για να καθορίσει τον τρόπο παράδοσης του μηνύματος.
2. Τύπος ουράς
Υπάρχουν δύο κύριοι τύποι ουρών: ουρές που δημιουργούνται από εσάς ή άλλους χρήστες στο δίκτυό σας και ουρές συστήματος.
Μια ουρά που δημιουργείται από το χρήστη μπορεί να είναι οποιοδήποτε από τα ακόλουθα:
Οι δημόσιες ουρές αναπαράγονται σε ολόκληρο το δίκτυο ουράς μηνυμάτων και έχουν τη δυνατότητα πρόσβασης από όλους τους ιστότοπους που είναι συνδεδεμένοι στο δίκτυο.
Οι ιδιωτικές ουρές δεν δημοσιεύονται σε όλο το δίκτυο. Αντίθετα, είναι διαθέσιμα μόνο στον τοπικό υπολογιστή όπου βρίσκονται. Οι ιδιωτικές ουρές είναι προσβάσιμες μόνο από εφαρμογές που γνωρίζουν το πλήρες όνομα διαδρομής ή την ετικέτα της ουράς.
Η ουρά διαχείρισης περιέχει μηνύματα που επιβεβαιώνουν τις αποδείξεις μηνυμάτων που αποστέλλονται σε ένα δεδομένο δίκτυο ουράς μηνυμάτων. Καθορίστε την ουρά διαχείρισης που θέλετε να χρησιμοποιεί το στοιχείο MessageQueue, εάν υπάρχει.
Η ουρά απόκρισης περιέχει τα μηνύματα απόκρισης που επιστρέφονται στην εφαρμογή αποστολής όταν η εφαρμογή προορισμού λάβει το μήνυμα. Καθορίστε την ουρά απόκρισης που θέλετε να χρησιμοποιεί το στοιχείο MessageQueue, εάν υπάρχει.
Οι ουρές που δημιουργούνται από το σύστημα χωρίζονται γενικά στις ακόλουθες κατηγορίες:
Η Ουρά μπλοκ σημειώσεων αποθηκεύει προαιρετικά αντίγραφα απεσταλμένων μηνυμάτων και αντίγραφα μηνυμάτων που έχουν αφαιρεθεί από την ουρά. Μια ενιαία ουρά ημερολογίου σε κάθε πρόγραμμα-πελάτη ουράς μηνυμάτων αποθηκεύει ένα αντίγραφο των μηνυμάτων που αποστέλλονται από αυτόν τον υπολογιστή. Δημιουργείται ξεχωριστή ουρά ημερολογίου για κάθε ουρά στο διακομιστή. Αυτό το χρονικό παρακολουθεί τα μηνύματα που καταργούνται από αυτήν την ουρά.
Η ουρά νεκρών γραμμάτων αποθηκεύει αντίγραφα μηνυμάτων που δεν μπορούν να παραδοθούν ή έχουν λήξει. Εάν ένα μήνυμα που λήγει ή δεν μπορεί να παραδοθεί είναι συναλλακτικό, αποθηκεύεται σε μια ειδική ουρά νεκρών γραμμάτων που ονομάζεται "ουρά νεκρών γραμμάτων συναλλαγών". Τα νεκρά γράμματα αποθηκεύονται στον υπολογιστή όπου βρίσκεται το μήνυμα που έχει λήξει. Για περισσότερες πληροφορίες σχετικά με το χρονικό όριο και τα μηνύματα λήξης, ανατρέξτε στο θέμα Προεπιλεγμένες ιδιότητες μηνύματος.
Η ουρά αναφορών περιέχει μηνύματα που υποδεικνύουν τη διαδρομή που ακολουθεί το μήνυμα για να φτάσει στον προορισμό και μπορεί επίσης να περιέχει δοκιμαστικά μηνύματα. Μπορεί να υπάρχει μόνο μία ουρά αναφορών σε κάθε υπολογιστή.
Μια αποκλειστική ουρά συστήματος είναι μια σειρά από αποκλειστικές ουρές που αποθηκεύουν τα μηνύματα διαχείρισης και ειδοποιήσεων που χρειάζεται ένα σύστημα για να εκτελέσει λειτουργίες επεξεργασίας μηνυμάτων.
Το μεγαλύτερο μέρος της δουλειάς που γίνεται στην εφαρμογή περιλαμβάνει πρόσβαση σε δημόσιες ουρές και τα μηνύματά τους. Ωστόσο, ανάλογα με το ημερολόγιο, την επιβεβαίωση και άλλες ειδικές ανάγκες επεξεργασίας της εφαρμογής, είναι πιθανό να χρησιμοποιηθούν πολλές διαφορετικές ουρές συστήματος στις καθημερινές λειτουργίες.
3. Σύγχρονη VS. Ασύγχρονη Επικοινωνία
Η επικοινωνία στην ουρά είναι εγγενώς ασύγχρονη επειδή η αποστολή μηνυμάτων και η λήψη μηνυμάτων από την ουρά γίνεται με διαφορετικές διαδικασίες. Επίσης, η λειτουργία λήψης μπορεί να εκτελεστεί ασύγχρονα, επειδή το άτομο που θέλει να λάβει το μήνυμα μπορεί να καλέσει τη μέθοδο BeginReceive σε οποιαδήποτε δεδομένη ουρά και να συνεχίσει αμέσως με άλλες εργασίες χωρίς να περιμένει απάντηση. Αυτό είναι πολύ διαφορετικό από αυτό που οι άνθρωποι γνωρίζουν ως «σύγχρονη επικοινωνία».
Στη σύγχρονη επικοινωνία, ο αποστολέας του αιτήματος πρέπει να περιμένει απάντηση από τον προβλεπόμενο παραλήπτη πριν εκτελέσει άλλες εργασίες. Ο χρόνος αναμονής του αποστολέα εξαρτάται εξ ολοκλήρου από το χρόνο που χρειάζεται ο παραλήπτης για να επεξεργαστεί το αίτημα και να στείλει την απάντηση.
4. Αλληλεπίδραση με ουρές μηνυμάτων
Η επεξεργασία μηνυμάτων και η ανταλλαγή μηνυμάτων παρέχουν έναν ισχυρό και ευέλικτο μηχανισμό για την επικοινωνία μεταξύ των διεργασιών μεταξύ των στοιχείων εφαρμογών που βασίζονται σε διακομιστή. Προσφέρουν πολλά πλεονεκτήματα σε σχέση με την άμεση επίκληση μεταξύ των στοιχείων, όπως:
Σταθερότητα – Οι αποτυχίες στοιχείων επηρεάζουν τα μηνύματα πολύ λιγότερο από τις άμεσες κλήσεις μεταξύ στοιχείων, καθώς τα μηνύματα αποθηκεύονται σε μια ουρά και παραμένουν εκεί μέχρι να υποβληθούν σε σωστή επεξεργασία. Η επεξεργασία μηνυμάτων είναι παρόμοια με την επεξεργασία συναλλαγών, καθώς η επεξεργασία μηνυμάτων είναι εγγυημένη. Ιεράρχηση μηνυμάτων – Πιο επείγοντα ή σημαντικά μηνύματα μπορούν να ληφθούν πριν από σχετικά ασήμαντα μηνύματα, ώστε να μπορείτε να εγγυηθείτε επαρκή χρόνο απόκρισης για κρίσιμες εφαρμογές. Δυνατότητα εκτός σύνδεσης – Όταν αποστέλλονται μηνύματα, μπορούν να σταλούν σε μια προσωρινή ουρά και να παραμείνουν εκεί μέχρι να παραδοθούν επιτυχώς. Όταν η πρόσβαση στην επιθυμητή ουρά δεν είναι διαθέσιμη για οποιονδήποτε λόγο, ο χρήστης μπορεί να προχωρήσει στην ενέργεια. Ταυτόχρονα, άλλες λειτουργίες μπορούν να συνεχιστούν σαν να είχε γίνει επεξεργασία του μηνύματος, επειδή η παράδοση του μηνύματος είναι εγγυημένη όταν αποκατασταθεί η σύνδεση δικτύου. Επεξεργασία μηνυμάτων συναλλαγών – Συνδέστε πολλά σχετικά μηνύματα σε μία συναλλαγή για να διασφαλίσετε ότι τα μηνύματα παραδίδονται διαδοχικά, μόνο μία φορά και μπορούν να ανακτηθούν με επιτυχία από την ουρά προορισμού τους. Εάν υπάρχουν σφάλματα, ολόκληρη η συναλλαγή ακυρώνεται. Ασφάλεια – Η τεχνολογία ουράς μηνυμάτων στην οποία βασίζεται το στοιχείο MessageQueue χρησιμοποιεί την Ασφάλεια των Windows για την ασφάλεια του ελέγχου πρόσβασης, την παροχή ελέγχου και την κρυπτογράφηση και τον έλεγχο ταυτότητας των μηνυμάτων που αποστέλλονται και λαμβάνονται από το στοιχείο.
5. Γράψτε ένα απλό πρόγραμμα ουράς μηνυμάτων στο περιβάλλον .Net
(1) Εγκαταστήστε πρώτα τις Υπηρεσίες Ουράς Μηνυμάτων
Εγκαταστήστε το MSMQ μέσω του Πίνακα Ελέγχου, το βήμα "Προσθαφαίρεση προγραμμάτων" - "Προσθήκη/Κατάργηση στοιχείων των Windows".
Το MSMQ μπορεί να εγκατασταθεί είτε σε λειτουργία ομάδας εργασίας είτε σε λειτουργία τομέα. Εάν το πρόγραμμα εγκατάστασης δεν εντοπίσει ένα διακομιστή που εκτελεί μια ουρά μηνυμάτων που παρέχει υπηρεσίες καταλόγου, μπορεί να εγκατασταθεί μόνο σε κατάσταση λειτουργίας ομάδας εργασίας και η ουρά μηνυμάτων σε αυτόν τον υπολογιστή υποστηρίζει μόνο τη δημιουργία ιδιωτικών ουρών και τη δημιουργία άμεσων συνδέσεων με άλλους υπολογιστές που εκτελούν ουρές μηνυμάτων.
(2) Διαμορφώστε το MSMQ
Ανοίξτε τη Διαχείριση Υπολογιστών – Ουρά μηνυμάτων και δημιουργήστε μια ουρά MSMQDemo στην περιοχή Ιδιωτικές ουρές
(3) Γράψτε κώδικα - απλώς δείξτε το αντικείμενο MSMQ
Η κλάση MessageQueue είναι ένα περιτύλιγμα γύρω από μια "ουρά μηνυμάτων". Η κλάση MessageQueue παρέχει μια αναφορά στην ουρά ουράς μηνυμάτων. Μπορείτε να καθορίσετε μια διαδρομή προς έναν υπάρχοντα πόρο στον κατασκευαστή MessageQueue ή μπορείτε να δημιουργήσετε μια νέα ουρά στο διακομιστή. Για να μπορέσετε να καλέσετε Αποστολή, Αναζήτηση ή Λήψη, πρέπει να συσχετίσετε μια νέα παρουσία της κλάσης MessageQueue με μια υπάρχουσα ουρά.
Το MessageQueue υποστηρίζει δύο τύπους ανάκτησης μηνυμάτων: σύγχρονη και ασύγχρονη. Οι συγχρονισμένες μέθοδοι Peek και Receive αναγκάζουν το νήμα διεργασίας να περιμένει να φτάσει ένα νέο μήνυμα στην ουρά σε ένα καθορισμένο χρονικό διάστημα. Οι ασύγχρονες μέθοδοι BeginPeek και BeginReceive επιτρέπουν στην κύρια εργασία της εφαρμογής να συνεχίσει να εκτελείται σε ξεχωριστό νήμα πριν το μήνυμα φτάσει στην ουρά. Αυτές οι μέθοδοι λειτουργούν χρησιμοποιώντας αντικείμενα επανάκλησης και αντικείμενα κατάστασης για τη διευκόλυνση της επικοινωνίας πληροφοριών μεταξύ των νημάτων.
Λήψη πηγαίου κώδικα:
Τουρίστες, αν θέλετε να δείτε το κρυφό περιεχόμενο αυτής της ανάρτησης, παρακαλώ Απάντηση
|