Queue și Topic sunt două modele de mesagerie suportate de JMS: 1. Model de mesagerie cu coadă punct-la-punct (PTP): Cu acest model de mesagerie, o aplicație (adică producătorul de mesaje) poate trimite un mesaj către o altă aplicație (adică consumatorul de mesaje). În acest model de livrare, tipul destinației mesajului este o coadă (adică instanța clasei de implementare a interfeței de destinație este creată de instanța clasei de implementare a interfeței de sesiune prin apelarea metodei createQueue și transmiterea numelui cozii). Mesajul este mai întâi livrat către o coadă specifică de pe partea serverului de mesaje, iar de acolo mesajul este livrat unui consumator care ascultă această coadă. Aceeași coadă poate asocia mai mulți producători de mesaje și consumatori de mesaje, dar un mesaj poate fi livrat doar unui singur consumator de mesaje. Dacă mai mulți consumatori de mesaje ascultă mesajele din coadă, serverul de mesaje JMS determină care consumator de mesaje primește următorul mesaj pe baza principiului "primul venit, primul venit". Dacă niciun consumator de mesaje nu ascultă coada, mesajul rămâne în coadă până când consumatorul de mesaje se conectează la coadă. Acest model de mesagerie este un model leneș sau de sondaje în sensul tradițional. În acest model, mesajele nu sunt trimise automat către consumatorul de mesaje, ci sunt solicitate din coadă de către consumatorul de mesaje. 2. Modelul de mesagerie a subiectelor publică/abonat (publicație/sub): Cu acest model de mesagerie, aplicațiile pot trimite un singur mesaj către mai mulți consumatori de mesaje. În acest model de livrare, tipul de destinație al mesajului este topic (adică instanța clasei de implementare a interfeței de destinație este creată de instanța clasei de implementare a interfeței Session prin apelarea metodei createTopic și trimițând numele subiectului). Mesajul este publicat mai întâi pe un anumit subiect în serverul de mesaje de către producătorul mesajelor, care apoi transmite mesajul tuturor consumatorilor care s-au abonat la subiect. Obiectivele tematice susțin, de asemenea, abonamente pe termen lung. Un abonament pe termen lung înseamnă că consumatorul este înscris în scopul subiectului, dar poate fi inactiv când mesajul ajunge la destinație. Mesajul va fi primit când consumatorul este din nou activ. Dacă niciunul dintre consumatori nu este înscris într-o destinație de subiect, subiectul păstrează mesajele doar pentru consumatorii inactivi care s-au abonat pe termen lung. Spre deosebire de modelul de mesagerie PTP, modelul de mesagerie pub/sub permite mai multor abonați la subiecte să primească același mesaj. JMS păstrează mesajul până când toți abonații subiectului îl primesc. Modelul de mesagerie pub/sub este practic un model push. În acest model, mesajele sunt difuzate automat, iar consumatorii de mesaje nu trebuie să solicite sau să sondeze activ subiecte pentru a primi mesaje noi. Diferențele specifice sunt următoarele:
tip
| Subiect
| Coadă | Prezentare generală
| Publică Abonează-te mesaje Publică mesaje de abonament
| Punct-la-punct Punct-la-punct
| Nu există stat
| Datele de temă sunt fără stat în mod implicit.
| Datele din coadă sunt salvate implicit ca fișier pe serverul MQ, de exemplu, Active MQ este de obicei stocat sub $AMQ_HOME\data\kr-store\data. Poate fi configurat și ca un depozit de baze de date.
| Garanția integrității
| Nu există nicio garanție că fiecare dată publicată de editor va fi acceptată de abonat.
| Coada garantează că fiecare dată poate fi recepționată de către receptor.
| dacă mesajul se va pierde
| În general, când un editor publică un mesaj pentru un subiect, doar subredditul care ascultă adresa subiectului poate primi mesajul. Dacă nu ascultă sub subiect, subiectul se pierde.
| Expeditorul trimite un mesaj către coada țintă, iar receptorul poate primi mesaje pe această coadă asincron. Mesajele din coadă nu se vor pierde dacă nu există un destinatar care să le preia pentru moment.
| Politica de recepție a eliberării mesajelor
| Politica de publicare și recepție a mesajelor unu-la-multe, mai mulți subreddits care ascultă aceeași adresă de subiect pot primi mesaje trimise de către editor. Subredditul primește notificarea către serverul mq
| Politici unu-la-unu privind publicarea și recepția mesajelor, mesajele trimise de un expeditor pot fi primite doar de un singur destinatar. După ce receptorul primește, serverul MQ notifică serverul MQ că a fost primit, iar serverul MQ șterge sau ia alte acțiuni asupra mesajelor din coadă.
|
|