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

Άποψη: 13505|Απάντηση: 2

Ρυθμίσεις μόνιμης συνδρομής ActiveMQ

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 9/1/2017 11:12:10 π.μ. | | |

Ρυθμίσεις μόνιμης συνδρομής ActiveMQ
Ορίζοντας τη λειτουργία παράδοσης PERSISTENT για τον εκδότη, μπορείτε να χρησιμοποιήσετε μόνιμες συνδρομές για συνδρομητές, γεγονός που εγγυάται ότι το πρόγραμμα Pub/Sub λαμβάνει όλα τα δημοσιευμένα μηνύματα.
Οι συνδρομές μηνυμάτων χωρίζονται σε μη διαρκείς συνδρομές και διαρκείς συνδρομές και οι μη ανθεκτικές συνδρομές μπορούν να λαμβάνουν μηνύματα που αποστέλλονται σε ένα θέμα μόνο όταν ο πελάτης είναι ενεργός, δηλαδή όταν ο πελάτης είναι εκτός σύνδεσης, τα μηνύματα που αποστέλλονται στο θέμα κατά τη διάρκεια αυτής της περιόδου θα χαθούν και δεν θα ληφθούν ποτέ. Όταν ο πελάτης είναι εκτός σύνδεσης, το ActiveMQ θα αποθηκεύσει όλα τα μηνύματα που αποστέλλονται στο θέμα σύμφωνα με το αναγνωριστικό του και όταν ο πελάτης συνδεθεί ξανά στο ActiveMQ, θα λάβει όλα τα μηνύματα που αποστέλλονται στο θέμα όταν είναι εκτός σύνδεσης. Οι μόνιμες συνδρομές αυξάνουν τα γενικά έξοδα και έχουν μόνο έναν ενεργό χρήστη σε μια μόνιμη συνδρομή κάθε φορά. Βήματα για τη δημιουργία μόνιμης συνδρομής:
1. Ορίστε ένα αναγνωριστικό πελάτη για τη σύνδεση.
2. Καθορίστε ένα όνομα συνδρομής για το θέμα της συνδρομής.
Ο παραπάνω συνδυασμός πρέπει να είναι μοναδικός.
Ο κώδικας υλοποιεί μόνιμες συνδρομές

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

。 Στη συνέχεια, οποιοσδήποτε καταναλωτής μπορεί να το παραλάβει και να το πετάξει. Δεν έχει σημασία αν ένας καταναλωτής το απενεργοποιήσει για λίγο.

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

Πρώτον, αν υποτεθεί ότι οι καταναλωτές είναι απλοί καταναλωτές,
------------------------
Μετά την κυκλοφορία του <1> κυκλοφόρησε το activemq, κυκλοφόρησε το news 1, αλλά δυστυχώς, κανένας καταναλωτής δεν ξεκινά τώρα, δηλαδή κανένας καταναλωτής δεν έχει εγγραφεί. Έτσι

, η είδηση εγκαταλείφθηκε.

<2> Ο καταναλωτής 1 ξεκίνησε, συνδέθηκε στο activemq, εγγράφηκε και περίμενε ένα μήνυμα~~

Το activemq δημοσιεύει το μήνυμα 2, OK, ο καταναλωτής 1 το λαμβάνει και το επεξεργάζεται. Εγκατάλειψη μηνύματος.

<3> Το Consumer 2 κυκλοφορεί επίσης, συνδέεται στο activemq, εγγράφεται και περιμένει ένα μήνυμα~~

Το activemq δημοσιεύει το μήνυμα 3, OK, καταναλωτής 1, καταναλωτής 2 λαμβάνονται και υποβάλλονται σε επεξεργασία. Εγκατάλειψη μηνύματος.

<4> Ο καταναλωτής 1 είναι απενεργοποιημένος.

Το activemq δημοσιεύει το μήνυμα 4, OK, ο καταναλωτής 2 το λαμβάνει και το επεξεργάζεται. Εγκατάλειψη μηνύματος.

<5> Το Consumer 1 ξεκίνησε ξανά.

Το activemq δημοσιεύει τα μηνύματα 5, OK, καταναλωτή 1 και καταναλωτή 2 όλα τα λαμβάνουν και τα επεξεργάζονται. Εγκατάλειψη μηνύματος.
-----------------------------
Εν κατακλείδι:
Το ActiveMQ απλώς στέλνει μηνύματα στον καταναλωτή που έχει ξεκινήσει αυτήν τη στιγμή.
Οι καταναλωτές που απενεργοποιούνται θα χάσουν πολλά μηνύματα και δεν θα μπορούν να τα λάβουν ξανά.

Εάν το μήνυμα που αποστέλλεται είναι σημαντικά δεδομένα συγχρονισμού χρήστη και τα χάνει, τα δεδομένα χρήστη δεν συγχρονίζονται.

Λοιπόν, πώς μπορείτε να κάνετε τους καταναλωτές να λαμβάνουν αναπάντητα μηνύματα κατά την επανεκκίνηση;

Η απάντηση είναι μια μόνιμη συνδρομή.
-----------------------------

Οι συνηθισμένες συνδρομές, χωρίς διάκριση μεταξύ των καταναλωτών, αν υπάρχουν λίγα κεφάλια στο χώρο, ρίξτε μερικά ψωμάκια στον ατμό.
Για μόνιμες συνδρομές, πρέπει να καταγράψετε το όνομα του καταναλωτή.
Ο Ζανγκ Σαν είπε, είμαι ο Ζανγκ Σαν, υπάρχουν ψωμάκια στον ατμό για μένα, θα επιστρέψω να τα πάρω.
Ο Λι Σι είπε, είμαι ο Λι Σι, υπάρχουν ψωμάκια στον ατμό για μένα, θα επιστρέψω να τα πάρω.
activemq έγραψε τα ονόματα των Zhang San και Li Si.

Στη συνέχεια, όταν χωρίζετε τα ψωμάκια στον ατμό, το ένα κεφάλι εξακολουθεί να δίνει ένα ψωμάκι στον ατμό.
Μετά τη διαίρεση, όταν είδε ότι ο Ζανγκ Σαν δεν μιλούσε, σήμαινε ότι δεν ήταν εκεί, οπότε αφήστε του ένα.
Ο Λι Σι μίλησε, οπότε δεν χρειαζόταν να μείνει.

Ο Ζανγκ Σαν επέστρεψε, έψαξε για activemq και έριξε μια ματιά, αυτός δεν είναι ο Ζανγκ Σαν, φέρτε γρήγορα τα ψωμάκια του στον ατμό.
Μπορεί να είναι ένα ψωμάκι στον ατμό ή μπορεί να είναι 100 ψωμάκια στον ατμό, εξαρτάται από το πόσα ψωμάκια στον ατμό έχει μοιράσει ο Ζανγκ Σαν από τότε που έφυγε για λίγο.

Το activemq διακρίνει τους καταναλωτές με βάση το clientID και το όνομα συνδρομητή.
-----------------------------
Δημιουργία σύνδεσης
σύνδεση = connectionFactory.createConnection();
connection.setClientID("bbb"); Οι μόνιμες συνδρομές απαιτούν τη ρύθμιση.
connection.start();

Δημιουργία συνεδρίας
Συνεδρία = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Δημιουργία προορισμού
Θέμα θέματος = session.createTopic("userSyncTopic"); Όνομα θέματος

MessageConsumer καταναλωτής = session.createConsumer(θέμα); Τακτική συνδρομή
MessageConsumer καταναλωτής = session.createDurableSubscriber(θέμα;"bbb"); Μόνιμες συνδρομές


Ένα άλλο σημείο είναι ότι ο παραγωγός του μηνύματος χρησιμοποιεί μόνιμη λειτουργία κατά την αποστολή μηνυμάτων
Παραγωγός MessageProducer = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Εάν όχι, είναι επίμονο από προεπιλογή

(5) Εάν χρησιμοποιείται το ίδιο "clientID", θεωρείται ότι πρόκειται για τον ίδιο καταναλωτή. Εάν δύο προγράμματα χρησιμοποιούν το ίδιο "clientID", μόνο ένα μπορεί να συνδεθεί στο activemq ταυτόχρονα και η δεύτερη σύνδεση θα αναφέρει σφάλμα.

(6) Οι ρυθμίσεις του activemq είναι σε conf/activemq.xml και τα προεπιλεγμένα μηνύματα αποθηκεύονται στο data/kahadb και τα μηνύματα δεν θα χαθούν κατά την επανεκκίνηση του activemq.

Μπορείτε να αποκτήσετε πρόσβαση σε http://localhost:8161/admin/index.jsp: προβολή πληροφοριών σχετικά με τις τρέχουσες ουρές, τα θέματα και τους μόνιμους συνδρομητές, αποστολή μηνυμάτων και πολλά άλλα.

Μπορείτε να αντιγράψετε το περιεχόμενο στο activemq-jdbc.xml και να το τροποποιήσετε και μπορείτε να αποθηκεύσετε το μήνυμα σε άλλες βάσεις δεδομένων.




Προηγούμενος:Το κανάλι VIP πέμπτης γενιάς που αρπάζει εισιτήρια 360 έσπασε, μπείτε γρήγορα στη γραμμή VIP
Επόμενος:. Πλατφόρμα .Net
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 9/1/2017 1:41:53 μ.μ. |
1 Σύγκριση τεχνικών χαρακτηριστικών ουράς και θέματος
Όνομα
Θέμα
Ουρά
Επισκόπηση
Δημοσίευση μηνυμάτων εγγραφής Δημοσίευση μηνυμάτων εγγραφής
Από σημείο σε σημείο Από σημείο σε σημείο
Δεν υπάρχει κράτος
Τα δεδομένα θέματος είναι ανιθαγενή από προεπιλογή.
Τα δεδομένα ουράς αποθηκεύονται ως αρχείο στο διακομιστή MQ από προεπιλογή, για παράδειγμα, το Active MQ συνήθως αποθηκεύεται στο $AMQ_HOME\data\kr-store\data. Μπορεί επίσης να διαμορφωθεί ως κατάστημα DB.
Εγγύηση ακεραιότητας
Δεν υπάρχει καμία εγγύηση ότι κάθε στοιχείο που δημοσιεύεται από τον εκδότη θα γίνει αποδεκτό από τον συνδρομητή.
Το Queue εγγυάται ότι κάθε κομμάτι δεδομένων μπορεί να ληφθεί από τον δέκτη.
αν το μήνυμα θα χαθεί
Σε γενικές γραμμές, όταν ένας εκδότης δημοσιεύει ένα μήνυμα σε ένα θέμα, μόνο ο δευτερεύων που ακούει τη διεύθυνση του θέματος μπορεί να λάβει το μήνυμα. Εάν δεν υπάρχει δευτερεύουσα ακρόαση, το θέμα χάνεται.
Ο αποστολέας στέλνει ένα μήνυμα στην ουρά προορισμού και ο παραλήπτης μπορεί να λαμβάνει μηνύματα σε αυτήν την ουρά ασύγχρονα. Τα μηνύματα στην ουρά δεν θα χαθούν εάν δεν υπάρχει παραλήπτης για να τα παραλάβει προς το παρόν.
Πολιτική λήψης αποδέσμευσης μηνυμάτων
Πολιτική δημοσίευσης και λήψης μηνυμάτων ένα προς πολλά, πολλοί συνδρομητές που ακούν την ίδια διεύθυνση θέματος μπορούν να λαμβάνουν μηνύματα που αποστέλλονται από τον εκδότη. Ο συνδρομητής λαμβάνει την ειδοποίηση στον διακομιστή mq
Πολιτικές δημοσίευσης και λήψης μηνυμάτων ένας προς έναν, τα μηνύματα που αποστέλλονται από έναν αποστολέα μπορούν να ληφθούν μόνο από έναν παραλήπτη. Μετά τη λήψη του παραλήπτη, ο διακομιστής MQ ειδοποιεί τον διακομιστή MQ ότι έχει ληφθεί και ο διακομιστής MQ διαγράφει ή εκτελεί άλλες ενέργειες στα μηνύματα στην ουρά.

 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 9/1/2017 1:42:15 μ.μ. |
Η μεγαλύτερη διαφορά μεταξύ θέματος και ουράς είναι ότι το θέμα έχει τη μορφή μετάδοσης, ειδοποιώντας όλους τους πελάτες διαδικτυακής ακρόασης ότι υπάρχει ένα νέο μήνυμα και ο πελάτης χωρίς παρακολούθηση δεν θα λάβει το μήνυμα. Το Queue, από την άλλη πλευρά, ειδοποιεί έναν από τους πολλούς πελάτες ακρόασης με τρόπο peer-to-peer.

2 Σύγκριση της αποτελεσματικότητας επεξεργασίας μηνυμάτων μεταξύ των μεθόδων θέματος και ουράς
        Αυξάνοντας τον αριθμό των ταυτόχρονων μηνυμάτων του πελάτη ακρόασης, επαληθεύστε εάν η προώθηση μηνυμάτων του θέματος θα μειωθεί σημαντικά λόγω της αύξησης του συγχρονισμού του πελάτη ακρόασης.
        Από τα αποτελέσματα των μετρήσεων, δεν υπάρχει σημαντική διαφορά στην αποτελεσματικότητα αποστολής και λήψης μηνυμάτων που αποστέλλονται με τη μέθοδο θέματος υπό την προϋπόθεση ενός συνδρομητή και 100 συνδρομητών, αλλά υπό την προϋπόθεση της ταυτόχρονης χρήσης 500 συνδρομητών (νημάτων), η διαφορά απόδοσης είναι προφανής (λόγω της ταυτόχρονης χρήσης 500 νημάτων, το ποσοστό χρήσης της CPU του μηχανήματος μου φτάνει το 70-90%, επομένως είναι αδύνατο να επιβεβαιωθεί εάν πρόκειται για συμφόρηση απόδοσης που προκαλείται από την τοπική δοκιμή μου ή για συμφόρηση απόδοσης στη μέθοδο αποστολής μηνυμάτων θέματος, με αποτέλεσμα μια τόσο σημαντική μείωση της αποδοτικότητας).
        Δεν υπάρχει σημαντική διαφορά στην αποτελεσματικότητα της αποστολής και λήψης μηνυμάτων που αποστέλλονται με τη μέθοδο θέματος και τη λειτουργία ουράς υπό την προϋπόθεση ενός συνδρομητή και 100 συνδρομητών, αλλά υπό την προϋπόθεση της ταυτόχρονης χρήσης 500 συνδρομητών, η αποτελεσματικότητα της λειτουργίας θέματος είναι σημαντικά χαμηλότερη από αυτή της ουράς.
        Η αποτελεσματικότητα της αποστολής και λήψης μηνυμάτων που αποστέλλονται με τη μέθοδο Queue δεν αλλάζει σημαντικά υπό την προϋπόθεση ενός συνδρομητή, 100 συνδρομητών και 500 συνδρομητών.
Δεδομένα μέτρησης θέματος:


Ο συνολικός αριθμός των μηνυμάτων που αποστέλλονται από τον αποστολέα
Ο συνολικός αριθμός των μηνυμάτων που ελήφθησαν από όλους τους συνδρομητές
Ο μέσος χρόνος που απαιτείται για την αποστολή και λήψη μηνυμάτων
Μεμονωμένος συνδρομητής
100
100
101 ms
100 συνδρομητές
100
10000
103 κ.μ.
500 συνδρομητές
100
50000
14162 κμ.

Δεδομένα μέτρησης ουράς:


Ο συνολικός αριθμός των μηνυμάτων που αποστέλλονται από τον αποστολέα
Ο συνολικός αριθμός των μηνυμάτων που ελήφθησαν από όλους τους συνδρομητές
Ο μέσος χρόνος που απαιτείται για την αποστολή και λήψη μηνυμάτων
Μεμονωμένος συνδρομητής
100
100
96 κ.
100 συνδρομητές
100
100
96 κ.
500 συνδρομητές
100
100
100 ms

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

Mail To:help@itsvse.com