Το Queue και το Topic είναι δύο μοντέλα ανταλλαγής μηνυμάτων που υποστηρίζονται από το JMS: 1. Μοντέλο ανταλλαγής μηνυμάτων ουράς από σημείο σε σημείο (PTP): Με αυτό το μοντέλο ανταλλαγής μηνυμάτων, μια εφαρμογή (δηλαδή, ο παραγωγός μηνυμάτων) μπορεί να στείλει ένα μήνυμα σε μια άλλη εφαρμογή (δηλαδή, στον καταναλωτή μηνυμάτων). Σε αυτό το μοντέλο παράδοσης, ο τύπος προορισμού μηνύματος είναι μια ουρά (δηλαδή, η παρουσία της κλάσης υλοποίησης της διασύνδεσης προορισμού δημιουργείται από την παρουσία της κλάσης υλοποίησης της διασύνδεσης συνεδρίας καλώντας τη μέθοδο createQueue και μεταβιβάζοντας το όνομα της ουράς). Το μήνυμα παραδίδεται πρώτα σε μια συγκεκριμένη ουρά στην πλευρά του διακομιστή μηνυμάτων και από εκεί, το μήνυμα παραδίδεται σε έναν καταναλωτή που ακούει αυτήν την ουρά. Η ίδια ουρά μπορεί να συσχετίσει πολλούς παραγωγούς μηνυμάτων και καταναλωτές μηνυμάτων, αλλά ένα μήνυμα μπορεί να παραδοθεί μόνο σε έναν καταναλωτή μηνυμάτων. Εάν πολλοί καταναλωτές μηνυμάτων ακούν μηνύματα στην ουρά, ο διακομιστής μηνυμάτων JMS καθορίζει ποιος καταναλωτής μηνυμάτων θα λάβει το επόμενο μήνυμα με βάση την αρχή "first-come, first-come". Εάν κανένας καταναλωτής μηνυμάτων δεν ακούει την ουρά, το μήνυμα παραμένει στην ουρά μέχρι να συνδεθεί ο καταναλωτής μηνυμάτων στην ουρά. Αυτό το μοντέλο ανταλλαγής μηνυμάτων είναι ένα τεμπέλικο ή δημοσκοπικό μοντέλο με την παραδοσιακή έννοια. Σε αυτό το μοντέλο, τα μηνύματα δεν προωθούνται αυτόματα στον καταναλωτή μηνυμάτων, αλλά ζητούνται από την ουρά από τον καταναλωτή μηνυμάτων. 2. Μοντέλο ανταλλαγής μηνυμάτων θέματος δημοσίευσης/εγγραφής (pub/sub): Με αυτό το μοντέλο ανταλλαγής μηνυμάτων, οι εφαρμογές μπορούν να στείλουν ένα μόνο μήνυμα σε πολλούς καταναλωτές μηνυμάτων. Σε αυτό το μοντέλο παράδοσης, ο τύπος προορισμού μηνύματος είναι το θέμα (δηλαδή, η παρουσία κλάσης υλοποίησης διεπαφής προορισμού δημιουργείται από την παρουσία κλάσης υλοποίησης διεπαφής συνεδρίας καλώντας τη μέθοδο createTopic και μεταβιβάζοντας το όνομα του θέματος). Το μήνυμα δημοσιεύεται πρώτα σε ένα συγκεκριμένο θέμα στον διακομιστή μηνυμάτων από τον παραγωγό μηνυμάτων, ο οποίος στη συνέχεια παραδίδει το μήνυμα σε όλους τους καταναλωτές που έχουν εγγραφεί στο θέμα. Οι θεματικοί στόχοι υποστηρίζουν επίσης μακροπρόθεσμες συνδρομές. Μια μακροπρόθεσμη συνδρομή σημαίνει ότι ο καταναλωτής είναι εγγεγραμμένος στον στόχο θέματος, αλλά ο καταναλωτής μπορεί να είναι ανενεργός όταν το μήνυμα φτάσει στον προορισμό. Το μήνυμα θα ληφθεί όταν ο καταναλωτής είναι ξανά ενεργός. Εάν κανένας από τους καταναλωτές δεν είναι εγγεγραμμένος σε έναν θεματικό προορισμό, το θέμα διατηρεί μηνύματα μόνο για ανενεργούς καταναλωτές που έχουν εγγραφεί για μακροπρόθεσμη συνδρομή. Σε αντίθεση με το μοντέλο ανταλλαγής μηνυμάτων PTP, το μοντέλο ανταλλαγής μηνυμάτων pub/sub επιτρέπει σε πολλούς συνδρομητές θεμάτων να λαμβάνουν το ίδιο μήνυμα. Το JMS διατηρεί το μήνυμα μέχρι να το λάβουν όλοι οι συνδρομητές του θέματος. Το μοντέλο ανταλλαγής μηνυμάτων παμπ/υπο-είναι βασικά ένα μοντέλο ώθησης. Σε αυτό το μοντέλο, τα μηνύματα μεταδίδονται αυτόματα και οι καταναλωτές μηνυμάτων δεν χρειάζεται να ζητούν ενεργά ή να ψηφίζουν θέματα για να λαμβάνουν νέα μηνύματα. Οι συγκεκριμένες διαφορές είναι οι εξής:
δακτυλογραφώ
| Θέμα
| Ουρά | Επισκόπηση
| Δημοσίευση μηνυμάτων εγγραφής Δημοσίευση μηνυμάτων εγγραφής
| Από σημείο σε σημείο Από σημείο σε σημείο
| Δεν υπάρχει κράτος
| Τα δεδομένα θέματος είναι ανιθαγενή από προεπιλογή.
| Τα δεδομένα ουράς αποθηκεύονται ως αρχείο στο διακομιστή MQ από προεπιλογή, για παράδειγμα, το Active MQ συνήθως αποθηκεύεται στο $AMQ_HOME\data\kr-store\data. Μπορεί επίσης να διαμορφωθεί ως κατάστημα DB.
| Εγγύηση ακεραιότητας
| Δεν υπάρχει καμία εγγύηση ότι κάθε στοιχείο που δημοσιεύεται από τον εκδότη θα γίνει αποδεκτό από τον συνδρομητή.
| Το Queue εγγυάται ότι κάθε κομμάτι δεδομένων μπορεί να ληφθεί από τον δέκτη.
| αν το μήνυμα θα χαθεί
| Σε γενικές γραμμές, όταν ένας εκδότης δημοσιεύει ένα μήνυμα σε ένα θέμα, μόνο ο δευτερεύων που ακούει τη διεύθυνση του θέματος μπορεί να λάβει το μήνυμα. Εάν δεν υπάρχει δευτερεύουσα ακρόαση, το θέμα χάνεται.
| Ο αποστολέας στέλνει ένα μήνυμα στην ουρά προορισμού και ο παραλήπτης μπορεί να λαμβάνει μηνύματα σε αυτήν την ουρά ασύγχρονα. Τα μηνύματα στην ουρά δεν θα χαθούν εάν δεν υπάρχει παραλήπτης για να τα παραλάβει προς το παρόν.
| Πολιτική λήψης αποδέσμευσης μηνυμάτων
| Πολιτική δημοσίευσης και λήψης μηνυμάτων ένα προς πολλά, πολλοί συνδρομητές που ακούν την ίδια διεύθυνση θέματος μπορούν να λαμβάνουν μηνύματα που αποστέλλονται από τον εκδότη. Ο συνδρομητής λαμβάνει την ειδοποίηση στον διακομιστή mq
| Πολιτικές δημοσίευσης και λήψης μηνυμάτων ένας προς έναν, τα μηνύματα που αποστέλλονται από έναν αποστολέα μπορούν να ληφθούν μόνο από έναν παραλήπτη. Μετά τη λήψη του παραλήπτη, ο διακομιστής MQ ειδοποιεί τον διακομιστή MQ ότι έχει ληφθεί και ο διακομιστής MQ διαγράφει ή εκτελεί άλλες ενέργειες στα μηνύματα στην ουρά.
|
|